1
0
mirror of https://github.com/samba-team/samba.git synced 2025-03-10 12:58:35 +03:00

Compare commits

...

2 Commits

Author SHA1 Message Date
Stefan Metzmacher
4fcdb01808 libcli/util: let nt_errstr() fallback to hresult_errstr()
Sometimes NTSTATUS fields return things like
HRES_SEC_E_WRONG_PRINCIPAL.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>

Autobuild-User(master): Günther Deschner <gd@samba.org>
Autobuild-Date(master): Wed Dec 18 18:30:08 UTC 2024 on atb-devel-224
2024-12-18 18:30:08 +00:00
Stefan Metzmacher
6e0e9c4efc s4:scripting: fix gen_hresult.py
Commit 6877e4849e81ed8f7f355fa4069f13a134e999ce reversed the
return values of hresult_errstr() and hresult_errstr_const().

hresult_errstr() should return "HRES_SEC_E_WRONG_PRINCIPAL",
while hresult_errstr_const() should return
"The target principal name is incorrect.".

BUG: https://bugzilla.samba.org/show_bug.cgi?id=15769

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Guenther Deschner <gd@samba.org>
2024-12-18 17:29:37 +00:00
2 changed files with 17 additions and 2 deletions

View File

@ -346,6 +346,21 @@ const char *nt_errstr(NTSTATUS nt_code)
idx++;
}
/*
* NTSTATUS codes have 0xC000 in the upper 16-bit, if the
* upper 16-bit are not 0 and not 0xC000, it's likely
* an HRESULT.
*
* E.g. we should display HRES_SEC_E_WRONG_PRINCIPAL instead of
* 'NT code 0x80090322'
*/
if ((NT_STATUS_V(nt_code) & 0xFFFF0000) != 0 &&
(NT_STATUS_V(nt_code) & 0xFFFF0000) != 0xC0000000)
{
HRESULT hres = HRES_ERROR(NT_STATUS_V(nt_code));
return hresult_errstr(hres);
}
/*
* This should not really happen, we should have all error codes
* available. We have a problem that this might get wrongly

View File

@ -101,7 +101,7 @@ def generateSourceFile(out_file, errors):
out_file.write(" switch (HRES_ERROR_V(err_code)) {\n")
for err in errors:
out_file.write(f' case 0x{err.err_code:X}:\n')
out_file.write(f' result = \"{err.err_define}\";\n')
out_file.write(f' result = \"{err.err_string}\";\n')
out_file.write(f' break;\n')
out_file.write(" }\n")
out_file.write("\n")
@ -120,7 +120,7 @@ def generateSourceFile(out_file, errors):
out_file.write(" switch (HRES_ERROR_V(err_code)) {\n")
for err in errors:
out_file.write(f' case 0x{err.err_code:X}:\n')
out_file.write(f' return \"{err.err_string}\";\n')
out_file.write(f' return \"{err.err_define}\";\n')
out_file.write(f' break;\n')
out_file.write(" }\n")
out_file.write(" snprintf(msg, sizeof(msg), \"HRES code 0x%08x\", HRES_ERROR_V(err_code));\n")