From: Remi Tricot-Le Breton Date: Fri, 6 Jan 2023 15:31:06 +0000 (+0100) Subject: BUG/MINOR: http: Memory leak of http redirect rules' format string X-Git-Tag: v2.8-dev1~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=3120284c29f8f4c25458c432c544786657e5db26;p=thirdparty%2Fhaproxy.git BUG/MINOR: http: Memory leak of http redirect rules' format string When the configuration contains such a line: http-request redirect location / a "struct logformat_node" object is created and it contains an "arg" member which gets alloc'ed as well in which we copy the new location (see add_to_logformat_list). This internal arg pointer was not freed in the dedicated release_http_redir release function. Likewise, the expression pointer was not released as well. This patch can be backported to all stable branches. It should apply as-is all the way to 2.2 but it won't on 2.0 because release_http_redir did not exist yet. --- diff --git a/src/http_act.c b/src/http_act.c index 5582085d48..fb77f801b2 100644 --- a/src/http_act.c +++ b/src/http_act.c @@ -1769,6 +1769,8 @@ static void release_http_redir(struct act_rule *rule) free(redir->cookie_str); list_for_each_entry_safe(lf, lfb, &redir->rdr_fmt, list) { LIST_DELETE(&lf->list); + release_sample_expr(lf->expr); + free(lf->arg); free(lf); } free(redir); diff --git a/src/proxy.c b/src/proxy.c index 8bcc98c0d9..e53cc4f72d 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -244,6 +244,8 @@ void free_proxy(struct proxy *p) free(rdr->rdr_str); list_for_each_entry_safe(lf, lfb, &rdr->rdr_fmt, list) { LIST_DELETE(&lf->list); + release_sample_expr(lf->expr); + free(lf->arg); free(lf); } free(rdr);