summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libcli/util/ntstatus.h3
-rw-r--r--source4/libcli/util/errormap.c4
-rw-r--r--source4/param/loadparm.c2
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)));