diff options
author | Werner Koch <[email protected]> | 2023-10-27 12:20:47 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2023-10-27 12:20:47 +0000 |
commit | 95b9a31f81e4a56518269d2476b54a1f10fe8b3e (patch) | |
tree | 9d8c0d504ea66e18b56ba719819fd340421c8265 | |
parent | gpg: Allow expiration time after 2038-01-19 on 32 bit Windows. (diff) | |
download | gnupg-95b9a31f81e4a56518269d2476b54a1f10fe8b3e.tar.gz gnupg-95b9a31f81e4a56518269d2476b54a1f10fe8b3e.zip |
gpg: Fix minor memory leak during certain smartcard operations.
* g10/keygen.c (card_store_key_with_backup): Fix memory leak on error.
-rw-r--r-- | g10/keygen.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/g10/keygen.c b/g10/keygen.c index 87940722d..2f8528278 100644 --- a/g10/keygen.c +++ b/g10/keygen.c @@ -5386,17 +5386,26 @@ card_store_key_with_backup (ctrl_t ctrl, PKT_public_key *sub_psk, { ecdh_param_str = ecdh_param_str_from_pk (sk); if (!ecdh_param_str) - return gpg_error_from_syserror (); + { + free_public_key (sk); + return gpg_error_from_syserror (); + } } err = hexkeygrip_from_pk (sk, &hexgrip); if (err) - goto leave; + { + xfree (ecdh_param_str); + free_public_key (sk); + goto leave; + } memset(&info, 0, sizeof (info)); rc = agent_scd_getattr ("SERIALNO", &info); if (rc) { + xfree (ecdh_param_str); + free_public_key (sk); err = (gpg_error_t)rc; goto leave; } |