diff options
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libsmb/nterr.c | 28 | ||||
-rw-r--r-- | source3/torture/torture.c | 6 |
2 files changed, 29 insertions, 5 deletions
diff --git a/source3/libsmb/nterr.c b/source3/libsmb/nterr.c index 774e50e700..d88e650c9c 100644 --- a/source3/libsmb/nterr.c +++ b/source3/libsmb/nterr.c @@ -647,6 +647,7 @@ nt_err_code_struct nt_err_desc[] = const char *nt_errstr(NTSTATUS nt_code) { + static pstring msg; int idx = 0; #ifdef HAVE_LDAP @@ -655,6 +656,8 @@ const char *nt_errstr(NTSTATUS nt_code) } #endif + slprintf(msg, sizeof(msg), "NT code 0x%08x", NT_STATUS_V(nt_code)); + while (nt_errs[idx].nt_errstr != NULL) { if (NT_STATUS_EQUAL(nt_errs[idx].nt_errcode, nt_code)) { return nt_errs[idx].nt_errstr; @@ -662,8 +665,7 @@ const char *nt_errstr(NTSTATUS nt_code) idx++; } - return talloc_asprintf(talloc_tos(), "NT code 0x%08x", - NT_STATUS_V(nt_code)); + return msg; } /************************************************************************ @@ -687,6 +689,28 @@ const char *get_friendly_nt_error_msg(NTSTATUS nt_code) } /***************************************************************************** + Returns an NT_STATUS constant as a string for inclusion in autogen C code. + *****************************************************************************/ + +const char *get_nt_error_c_code(NTSTATUS nt_code) +{ + static pstring out; + int idx = 0; + + while (nt_errs[idx].nt_errstr != NULL) { + if (NT_STATUS_V(nt_errs[idx].nt_errcode) == + NT_STATUS_V(nt_code)) { + return nt_errs[idx].nt_errstr; + } + idx++; + } + + slprintf(out, sizeof(out), "NT_STATUS(0x%08x)", NT_STATUS_V(nt_code)); + + return out; +} + +/***************************************************************************** Returns the NT_STATUS constant matching the string supplied (as an NTSTATUS) *****************************************************************************/ diff --git a/source3/torture/torture.c b/source3/torture/torture.c index e48448e5da..6d0fc546ab 100644 --- a/source3/torture/torture.c +++ b/source3/torture/torture.c @@ -4768,14 +4768,14 @@ static BOOL run_error_map_extract(int dummy) { if (NT_STATUS_V(nt_status) != error) { printf("/*\t{ This NT error code was 'sqashed'\n\t from %s to %s \n\t during the session setup }\n*/\n", - nt_errstr(NT_STATUS(error)), - nt_errstr(nt_status)); + get_nt_error_c_code(NT_STATUS(error)), + get_nt_error_c_code(nt_status)); } printf("\t{%s,\t%s,\t%s},\n", smb_dos_err_class(errclass), smb_dos_err_name(errclass, errnum), - nt_errstr(NT_STATUS(error))); + get_nt_error_c_code(NT_STATUS(error))); } return True; } |