From cc611412453b77bfd7aa33d8bbcfb8dea727c49a Mon Sep 17 00:00:00 2001 From: Lubos Kardos Date: Tue, 8 Mar 2016 14:29:24 +0100 Subject: [PATCH] Fix memory leaks in rpmGetSubkeys() and pgpPrtParamsSubkeys() --- rpmio/rpmkeyring.c | 1 + rpmio/rpmpgp.c | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/rpmio/rpmkeyring.c b/rpmio/rpmkeyring.c index c3d2c1975b..ac3e3bc5ab 100644 --- a/rpmio/rpmkeyring.c +++ b/rpmio/rpmkeyring.c @@ -177,6 +177,7 @@ rpmPubkey *rpmGetSubkeys(rpmPubkey mainkey, int *count) subkey->nrefs = 1; pthread_rwlock_init(&subkey->lock, NULL); } + free(pgpsubkeys); } *count = pgpsubkeysCount; diff --git a/rpmio/rpmpgp.c b/rpmio/rpmpgp.c index 6f8d77b2b5..9b31bc9b1b 100644 --- a/rpmio/rpmpgp.c +++ b/rpmio/rpmpgp.c @@ -1022,8 +1022,10 @@ int pgpPrtParamsSubkeys(const uint8_t *pkts, size_t pktlen, /* Copy UID from main key to subkey */ digps[count]->userid = xstrdup(mainkey->userid); - if(getFingerprint(pkt.body, pkt.blen, digps[count]->signid)) + if(getFingerprint(pkt.body, pkt.blen, digps[count]->signid)) { + pgpDigParamsFree(digps[count]); continue; + } if(pgpPrtKey(pkt.tag, pkt.body, pkt.blen, digps[count])) { pgpDigParamsFree(digps[count]);