Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Smb work sn v1.3 #7955

Closed
wants to merge 5 commits into from
Closed

Smb work sn v1.3 #7955

wants to merge 5 commits into from

Conversation

regit
Copy link
Contributor

@regit regit commented Oct 2, 2022

Update of #7924

Link to redmine ticket:

Describe changes:

  • Fix build in debug mode

This patch updates the NT status code definition to use the status
definition used on Microsoft documentation website. A first python
script is building JSON object with code definition.

```
import json
from bs4 import BeautifulSoup
import requests

ntstatus = requests.get('https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-erref/596a1078-e883-4972-9bbc-49e60bebca55')

ntstatus_parsed = BeautifulSoup(ntstatus.text, 'html.parser')

ntstatus_parsed = ntstatus_parsed.find('tbody')

ntstatus_dict = {}

for item in ntstatus_parsed.find_all('tr'):
    cell = item.find_all('td')
    if len(cell) == 0:
        continue
    code = cell[0].find_all('p')
    description_ps = cell[1].find_all('p')
    description_list = []
    if len(description_ps):
        for desc in description_ps:
            if not desc.string is None:
                description_list.append(desc.string.replace('\n ', ''))
    else:
        description_list = ['Description not available']
    if not code[0].string.lower() in ntstatus_dict:
        ntstatus_dict[code[0].string.lower()] = {"text": code[1].string, "desc": ' '.join(description_list)}

print(json.dumps(ntstatus_dict))
```

The second one is generating the code that is ready to be inserted into the
source file:

```
import json

ntstatus_file = open('ntstatus.json', 'r')

ntstatus = json.loads(ntstatus_file.read())

declaration_format = 'pub const SMB_NT%s:%su32 = %s;\n'
resolution_format = '        SMB_NT%s%s=> "%s",\n'

declaration = ""
resolution = ""

text_max = len(max([ntstatus[x]['text'] for x in ntstatus.keys()], key=len))

for code in ntstatus.keys():
    text = ntstatus[code]['text']
    text_spaces = ' ' * (4 + text_max - len(text))
    declaration += declaration_format % (text, text_spaces, code)
    resolution += resolution_format % (text, text_spaces, text)

print(declaration)
print('\n')
print('''
pub fn smb_ntstatus_string(c: u32) -> String {
    match c {
''')
print(resolution)
print('''
        _ => { return (c).to_string(); },
    }.to_string()
}
''')
```

Bug OISF#5412.
Avoid an allocation by returning a static string.
@codecov
Copy link

codecov bot commented Oct 2, 2022

Codecov Report

Merging #7955 (5895dcf) into master (db5cf1f) will decrease coverage by 0.66%.
The diff coverage is 38.04%.

Additional details and impacted files
@@            Coverage Diff             @@
##           master    #7955      +/-   ##
==========================================
- Coverage   82.19%   81.52%   -0.67%     
==========================================
  Files         949      951       +2     
  Lines      273740   275584    +1844     
==========================================
- Hits       224998   224670     -328     
- Misses      48742    50914    +2172     
Flag Coverage Δ
fuzzcorpus 63.09% <38.04%> (-1.17%) ⬇️
suricata-verify 58.71% <35.86%> (-0.74%) ⬇️
unittests 63.55% <32.60%> (-0.42%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

@suricata-qa
Copy link

Information: QA ran without warnings.

Pipeline 9811

@victorjulien victorjulien mentioned this pull request Oct 3, 2022
@victorjulien
Copy link
Member

Merged in #7959, thanks Eric!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

Successfully merging this pull request may close these issues.

3 participants