param: Ensure the correct mem context is always being used from s3
authorGarming Sam <garming@catalyst.net.nz>
Tue, 10 Jun 2014 21:56:20 +0000 (09:56 +1200)
committerAndrew Bartlett <abartlet@samba.org>
Mon, 7 Jul 2014 21:32:36 +0000 (23:32 +0200)
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Nadezhda Ivanova <nivanova@samba.org>
Change-Id: I7b93822d0d06b00f08fecc2e55778767dd785b91

lib/param/loadparm.c

index 12a5bd13e493c0ca1873417ff84cfac1d2aa8982..cd582451485cb76090c5995ee0da3957429bca52 100644 (file)
@@ -1386,7 +1386,14 @@ static bool lp_do_parameter_parametric(struct loadparm_context *lp_ctx,
 
        if (service == NULL) {
                data = &lp_ctx->globals->param_opt;
-               mem_ctx = lp_ctx->globals;
+               /**
+                * s3 code cannot deal with parametric options stored on the globals ctx.
+                */
+               if (lp_ctx->s3_fns != NULL) {
+                       mem_ctx = NULL;
+               } else {
+                       mem_ctx = lp_ctx->globals->ctx;
+               }
        } else {
                data = &service->param_opt;
                mem_ctx = service;
@@ -1591,7 +1598,7 @@ bool lpcfg_do_global_parameter(struct loadparm_context *lp_ctx,
 
        parm_ptr = lpcfg_parm_ptr(lp_ctx, NULL, &parm_table[parmnum]);
 
-       return set_variable(lp_ctx->globals, parmnum, parm_ptr,
+       return set_variable(lp_ctx->globals->ctx, parmnum, parm_ptr,
                            pszParmName, pszParmValue, lp_ctx, true);
 }