From 1d54b9f70e627ffb3380c3f487afc9b3bc8794ed Mon Sep 17 00:00:00 2001 From: Christopher Faulet Date: Mon, 4 May 2026 14:59:24 +0200 Subject: [PATCH] BUG/MINOR: resolvers: Free opts on parse error in resolv_parse_do_resolve() The error handler at do_resolve_parse_error freed varname and resolvers_id but missed freeing rule->arg.resolv.opts (allocated via calloc). Added ha_free(&rule->arg.resolv.opts) to the cleanup path. This patch could be backported to all stable branches. --- src/resolvers.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/resolvers.c b/src/resolvers.c index de93fea1a..0200be4c5 100644 --- a/src/resolvers.c +++ b/src/resolvers.c @@ -3403,6 +3403,7 @@ enum act_parse_ret resolv_parse_do_resolve(const char **args, int *orig_arg, str do_resolve_parse_error: ha_free(&rule->arg.resolv.varname); ha_free(&rule->arg.resolv.resolvers_id); + ha_free(&rule->arg.resolv.opts); memprintf(err, "Can't parse '%s'. Expects 'do-resolve(,[,]) '. Available options are 'ipv4' and 'ipv6'", args[cur_arg]); return ACT_RET_PRS_ERR;