From: Dr. Stephen Henson Date: Tue, 23 Nov 2004 21:22:54 +0000 (+0000) Subject: Fix memory leak. X-Git-Tag: BEN_FIPS_TEST_6~45 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=6237528c82c1c615de26b8856f9f0d5704548dd6;p=oweals%2Fopenssl.git Fix memory leak. --- diff --git a/apps/pkcs12.c b/apps/pkcs12.c index 71192bdf74..70fb23b1fa 100644 --- a/apps/pkcs12.c +++ b/apps/pkcs12.c @@ -710,9 +710,10 @@ int MAIN(int argc, char **argv) int dump_certs_keys_p12 (BIO *out, PKCS12 *p12, char *pass, int passlen, int options, char *pempass) { - STACK_OF(PKCS7) *asafes; + STACK_OF(PKCS7) *asafes = NULL; STACK_OF(PKCS12_SAFEBAG) *bags; int i, bagnid; + int ret = 0; PKCS7 *p7; if (!( asafes = PKCS12_unpack_authsafes(p12))) return 0; @@ -730,16 +731,22 @@ int dump_certs_keys_p12 (BIO *out, PKCS12 *p12, char *pass, } bags = PKCS12_unpack_p7encdata(p7, pass, passlen); } else continue; - if (!bags) return 0; + if (!bags) goto err; if (!dump_certs_pkeys_bags (out, bags, pass, passlen, options, pempass)) { sk_PKCS12_SAFEBAG_pop_free (bags, PKCS12_SAFEBAG_free); - return 0; + goto err; } sk_PKCS12_SAFEBAG_pop_free (bags, PKCS12_SAFEBAG_free); + bags = NULL; } - sk_PKCS7_pop_free (asafes, PKCS7_free); - return 1; + ret = 1; + + err: + + if (asafes) + sk_PKCS7_pop_free (asafes, PKCS7_free); + return ret; } int dump_certs_pkeys_bags (BIO *out, STACK_OF(PKCS12_SAFEBAG) *bags,