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.
This commit is contained in:
Remi Tricot-Le Breton 2023-01-06 16:31:06 +01:00 committed by Christopher Faulet
parent 80ff10c81d
commit 3120284c29
2 changed files with 4 additions and 0 deletions

View File

@ -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);

View File

@ -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);