diff options
-rw-r--r-- | libcli/util/ntstatus.h | 3 | ||||
-rw-r--r-- | source4/libcli/util/errormap.c | 4 | ||||
-rw-r--r-- | source4/param/loadparm.c | 2 |
3 files changed, 8 insertions, 1 deletions
diff --git a/libcli/util/ntstatus.h b/libcli/util/ntstatus.h index bf03d51d022..fa4553df1e0 100644 --- a/libcli/util/ntstatus.h +++ b/libcli/util/ntstatus.h @@ -628,6 +628,9 @@ const char *get_nt_error_c_code(NTSTATUS nt_code); *****************************************************************************/ NTSTATUS nt_status_string_to_code(const char *nt_status_str); +/** Used by ntstatus_dos_equal: */ +extern bool ntstatus_check_dos_mapping; + #define NT_STATUS_IS_OK(x) (NT_STATUS_V(x) == 0) #define NT_STATUS_IS_ERR(x) ((NT_STATUS_V(x) & 0xc0000000) == 0xc0000000) /* checking for DOS error mapping here is ugly, but unfortunately the diff --git a/source4/libcli/util/errormap.c b/source4/libcli/util/errormap.c index 4260c0dd7df..5c0d0af8d80 100644 --- a/source4/libcli/util/errormap.c +++ b/source4/libcli/util/errormap.c @@ -1160,6 +1160,8 @@ static const struct { {NT_STATUS_OK, WERR_OK} }; +bool ntstatus_check_dos_mapping = true; + /* check if a DOS encoded NTSTATUS code maps to the given NTSTATUS code */ @@ -1169,7 +1171,7 @@ bool ntstatus_dos_equal(NTSTATUS status1, NTSTATUS status2) the mapping of dos codes, as we want to catch the cases where a forced dos code is needed */ - if (lp_nt_status_support(global_loadparm)) { + if (ntstatus_check_dos_mapping) { return NT_STATUS_V(status1) == NT_STATUS_V(status2); } diff --git a/source4/param/loadparm.c b/source4/param/loadparm.c index 201013609eb..b79be28ac05 100644 --- a/source4/param/loadparm.c +++ b/source4/param/loadparm.c @@ -2480,6 +2480,8 @@ bool lp_load(struct loadparm_context *lp_ctx, const char *filename) reload_charcnv(lp_ctx); + ntstatus_check_dos_mapping = lp_nt_status_support(lp_ctx); + /* FIXME: Check locale in environment for this: */ if (strcmp(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx)) != 0) d_set_iconv(smb_iconv_open(lp_display_charset(lp_ctx), lp_unix_charset(lp_ctx))); |