diff options
-rw-r--r-- | lib/param/loadparm.c | 32 | ||||
-rw-r--r-- | source3/param/loadparm.c | 16 |
2 files changed, 23 insertions, 25 deletions
diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 5a6b361d9e..636c41bd20 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -98,8 +98,6 @@ static bool defaults_saved = false; /* prototypes for the special type handlers */ static bool handle_include(struct loadparm_context *lp_ctx, int unused, const char *pszParmValue, char **ptr); -static bool handle_realm(struct loadparm_context *lp_ctx, int unused, - const char *pszParmValue, char **ptr); static bool handle_copy(struct loadparm_context *lp_ctx, int unused, const char *pszParmValue, char **ptr); @@ -1063,16 +1061,32 @@ bool lpcfg_file_list_changed(struct loadparm_context *lp_ctx) Handle the "realm" parameter ***************************************************************************/ -static bool handle_realm(struct loadparm_context *lp_ctx, int unused, - const char *pszParmValue, char **ptr) +bool handle_realm(struct loadparm_context *lp_ctx, int unused, + const char *pszParmValue, char **ptr) { - lpcfg_string_set(lp_ctx, ptr, pszParmValue); + char *upper; + char *lower; + + upper = strupper_talloc(lp_ctx, pszParmValue); + if (upper == NULL) { + return false; + } - talloc_free(lp_ctx->globals->realm); - talloc_free(lp_ctx->globals->dnsdomain); + lower = strlower_talloc(lp_ctx, pszParmValue); + if (lower == NULL) { + TALLOC_FREE(upper); + return false; + } - lp_ctx->globals->realm = strupper_talloc(lp_ctx, pszParmValue); - lp_ctx->globals->dnsdomain = strlower_talloc(lp_ctx, pszParmValue); + if (lp_ctx->s3_fns != NULL) { + lp_ctx->s3_fns->lp_string_set(ptr, pszParmValue); + lp_ctx->s3_fns->lp_string_set(&lp_ctx->globals->realm, upper); + lp_ctx->s3_fns->lp_string_set(&lp_ctx->globals->dnsdomain, lower); + } else { + lpcfg_string_set(lp_ctx, ptr, pszParmValue); + lpcfg_string_set(lp_ctx, &lp_ctx->globals->realm, upper); + lpcfg_string_set(lp_ctx, &lp_ctx->globals->dnsdomain, lower); + } return true; } diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index bbb2144cf6..efaa93b237 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -265,7 +265,6 @@ static bool handle_copy(struct loadparm_context *unused, int snum, const char *p static bool handle_idmap_backend(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr); static bool handle_idmap_uid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr); static bool handle_idmap_gid(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr); -static bool handle_realm(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr ); static bool handle_netbios_aliases(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr ); static bool handle_charset(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr ); static bool handle_dos_charset(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr ); @@ -2726,21 +2725,6 @@ static bool handle_dos_charset(struct loadparm_context *unused, int snum, const return true; } -static bool handle_realm(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr) -{ - bool ret = true; - TALLOC_CTX *frame = talloc_stackframe(); - char *realm = strupper_talloc(frame, pszParmValue); - char *dnsdomain = strlower_talloc(realm, pszParmValue); - - ret &= string_set(Globals.ctx, &Globals.realm_original, pszParmValue); - ret &= string_set(Globals.ctx, &Globals.realm, realm); - ret &= string_set(Globals.ctx, &Globals.dnsdomain, dnsdomain); - TALLOC_FREE(frame); - - return ret; -} - static bool handle_netbios_aliases(struct loadparm_context *unused, int snum, const char *pszParmValue, char **ptr) { TALLOC_FREE(Globals.netbios_aliases); |