From 7cbe29c4fb4f593e194b6c25cb31633b4a6e0b2b Mon Sep 17 00:00:00 2001 From: Jakub Jelen Date: Tue, 13 Apr 2021 14:21:29 +0900 Subject: [PATCH] scd: Fix memory leaks. * scd/apdu.c (apdu_dev_list_start): Free DL. * scd/app-nks.c (pubkey_from_pk_file): Fix typo in condition. -- GnuPG-bug-id: 5393 Signed-off-by: Jakub Jelen --- scd/apdu.c | 4 ++++ scd/app-nks.c | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/scd/apdu.c b/scd/apdu.c index 2d77ae03f..10657102e 100644 --- a/scd/apdu.c +++ b/scd/apdu.c @@ -1985,6 +1985,7 @@ apdu_dev_list_start (const char *portstr, struct dev_list **l_p) err = ccid_dev_scan (&dl->idx_max, &dl->table); if (err) { + xfree (dl); npth_mutex_unlock (&reader_table_lock); return err; } @@ -2009,6 +2010,7 @@ apdu_dev_list_start (const char *portstr, struct dev_list **l_p) if (!pcsc.context) if (pcsc_init () < 0) { + xfree (dl); npth_mutex_unlock (&reader_table_lock); return gpg_error (GPG_ERR_NO_SERVICE); } @@ -2023,6 +2025,7 @@ apdu_dev_list_start (const char *portstr, struct dev_list **l_p) log_error ("error allocating memory for reader list\n"); close_pcsc_reader (0); + xfree (dl); npth_mutex_unlock (&reader_table_lock); return err; } @@ -2034,6 +2037,7 @@ apdu_dev_list_start (const char *portstr, struct dev_list **l_p) pcsc_error_string (r), r); xfree (p); close_pcsc_reader (0); + xfree (dl); npth_mutex_unlock (&reader_table_lock); return iso7816_map_sw (pcsc_error_to_sw (r)); } diff --git a/scd/app-nks.c b/scd/app-nks.c index bf2ad51b7..31b91ac93 100644 --- a/scd/app-nks.c +++ b/scd/app-nks.c @@ -372,7 +372,7 @@ pubkey_from_pk_file (app_t app, int pkfid, int cfid, newlen = 1 + buflen[i] - offset[i]; newbuf = xtrymalloc (newlen); - if (!newlen) + if (!newbuf) { err = gpg_error_from_syserror (); xfree (buffer[0]);