summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lib/param/loadparm.c32
-rw-r--r--source3/param/loadparm.c16
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);