lib:util:loadparm - fix leak in lpcfg_dump_a_parameter
authorAndrew Walker <awalker@ixsystems.com>
Wed, 21 Oct 2020 11:47:14 +0000 (07:47 -0400)
committerJeremy Allison <jra@samba.org>
Wed, 21 Oct 2020 23:08:43 +0000 (23:08 +0000)
This function calls talloc_strdup() for the parm_name passed into
it so that we can check whether it's a parametric entry. It's
allocated under the loadparm context passed into the function.
Primary consumer of this is "testparm" and so context short-lived in
typical use-case, but this is also exposed via pyparam and so the
loadparm context may be somewhat longer-lived depending on how it is
being used.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14544

Signed-off-by: Andrew Walker <awalker@ixsystems.com>
Reviewed-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Gary Lockyer <gary@catalyst.net.nz>
lib/param/loadparm.c

index 5309561b398bc89ed4c8158aa31f5846de98dea5..eaf992f209b92952b7a42ff8549f2e78588ae405 100644 (file)
@@ -2408,11 +2408,14 @@ bool lpcfg_dump_a_parameter(struct loadparm_context *lp_ctx,
                                local_parm_name, parm_opt);
                        if (parm_opt_value) {
                                fprintf(f, "%s\n", parm_opt_value);
+                               TALLOC_FREE(local_parm_name);
                                return true;
                        }
                }
+               TALLOC_FREE(local_parm_name);
                return false;
        }
+       TALLOC_FREE(local_parm_name);
 
        /* parameter is not parametric, search the table */
        parm = lpcfg_parm_struct(lp_ctx, parm_name);