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;