From: Andrew Walker Date: Wed, 21 Oct 2020 11:47:14 +0000 (-0400) Subject: lib:util:loadparm - fix leak in lpcfg_dump_a_parameter X-Git-Tag: talloc-2.3.2~200 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3b2a9083f8ea7758ab545ff82578ba35e1f05679;p=thirdparty%2Fsamba.git lib:util:loadparm - fix leak in lpcfg_dump_a_parameter 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 Reviewed-by: Jeremy Allison Reviewed-by: Gary Lockyer --- diff --git a/lib/param/loadparm.c b/lib/param/loadparm.c index 5309561b398..eaf992f209b 100644 --- a/lib/param/loadparm.c +++ b/lib/param/loadparm.c @@ -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);