From a16f726f9404f173705cc3bef71daee38d2c094b Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Tue, 13 Apr 2021 14:54:53 +0900 Subject: [PATCH] common: Fix memory leaks. * common/name-value.c (do_nvc_parse): Free NAME. * common/recsel.c (recsel_parse_expr): Release SE_HEAD and EXPR_BUFFER. -- GnuPG-bug-id: 5393 Signed-off-by: Jakub Jelen --- common/name-value.c | 6 +++++- common/recsel.c | 8 +++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/common/name-value.c b/common/name-value.c index f663ecfe1..0bd205b7d 100644 --- a/common/name-value.c +++ b/common/name-value.c @@ -777,9 +777,13 @@ do_nvc_parse (nvc_t *result, int *errlinep, estream_t stream, /* Add the final entry. */ if (raw_value) - err = _nvc_add (*result, name, NULL, raw_value, 1); + { + err = _nvc_add (*result, name, NULL, raw_value, 1); + name = NULL; + } leave: + xfree (name); gpgrt_free (buf); if (err) { diff --git a/common/recsel.c b/common/recsel.c index b2b302b75..95c104fdd 100644 --- a/common/recsel.c +++ b/common/recsel.c @@ -249,7 +249,13 @@ recsel_parse_expr (recsel_expr_t *selector, const char *expression) se = xtrymalloc (sizeof *se + strlen (expr)); if (!se) - return my_error_from_syserror (); + { + gpg_error_t err = my_error_from_syserror (); + + recsel_release (se_head); + xfree (expr_buffer); + return err; + } strcpy (se->name, expr); se->next = NULL; se->not = 0;