[PATCH v3 10/22] trailer: fix leaking trailer values
- From
Patrick Steinhardt <ps@pks.im>
- Date
- Nov 5, 2024, 06:17 UTC
- Message-ID
- <dac63bae39e01e612621b36b698d13d06a21a2ae.1730786196.git.ps@pks.im>
- In-Reply-To
- <cover.1730786195.git.ps@pks.im>
Fix leaking trailer values when replacing the value with a command or when the token value is empty.
This leak is exposed by t7513, but plugging it does not make the whole test suite pass.
Signed-off-by: Patrick Steinhardt <ps@pks.im> --- trailer.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/trailer.c b/trailer.c index 682d74505bf..6bafe92b326 100644 --- a/trailer.c +++ b/trailer.c @@ -249,7 +249,9 @@ static char *apply_command(struct conf_info *conf, const char *arg) static void apply_item_command(struct trailer_item *in_tok, struct arg_item *arg_tok) { if (arg_tok->conf.command || arg_tok->conf.cmd) { - const char *arg; + char *value_to_free = NULL; + char *arg; + if (arg_tok->value && arg_tok->value[0]) { arg = arg_tok->value; } else { @@ -257,9 +259,13 @@ static void apply_item_command(struct trailer_item *in_tok, struct arg_item *arg arg = xstrdup(in_tok->value); else arg = xstrdup(""); + value_to_free = arg_tok->value; } + arg_tok->value = apply_command(&arg_tok->conf, arg); - free((char *)arg); + + free(value_to_free); + free(arg); } }
-- 2.47.0.229.g8f8d6eee53.dirty