From a113826eac59a1e897c679beaa5934542c46952d Mon Sep 17 00:00:00 2001 From: Matt Caswell Date: Thu, 13 May 2021 15:13:22 +0100 Subject: [PATCH] Fix a memleak on an error path in the pkcs12 test helpers Reviewed-by: Tomas Mraz Reviewed-by: Paul Dale (Merged from https://github.com/openssl/openssl/pull/15269) --- test/helpers/pkcs12.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/test/helpers/pkcs12.c b/test/helpers/pkcs12.c index bdc8585535a..ab877bca005 100644 --- a/test/helpers/pkcs12.c +++ b/test/helpers/pkcs12.c @@ -278,11 +278,9 @@ void start_contentinfo(PKCS12_BUILDER *pb) void end_contentinfo(PKCS12_BUILDER *pb) { - if (pb->success) { - if (pb->bags && !TEST_true(PKCS12_add_safe(&pb->safes, pb->bags, -1, 0, NULL))) { + if (pb->success && pb->bags != NULL) { + if (!TEST_true(PKCS12_add_safe(&pb->safes, pb->bags, -1, 0, NULL))) pb->success = 0; - return; - } } sk_PKCS12_SAFEBAG_pop_free(pb->bags, PKCS12_SAFEBAG_free); pb->bags = NULL; @@ -291,19 +289,16 @@ void end_contentinfo(PKCS12_BUILDER *pb) void end_contentinfo_encrypted(PKCS12_BUILDER *pb, const PKCS12_ENC *enc) { - if (pb->success) { - if (pb->bags) { - if (legacy) { - if (!TEST_true(PKCS12_add_safe(&pb->safes, pb->bags, enc->nid, enc->iter, enc->pass))) { - pb->success = 0; - return; - } - } else { - if (!TEST_true(PKCS12_add_safe_ex(&pb->safes, pb->bags, enc->nid, enc->iter, enc->pass, test_ctx, test_propq))) { - pb->success = 0; - return; - } - } + if (pb->success && pb->bags != NULL) { + if (legacy) { + if (!TEST_true(PKCS12_add_safe(&pb->safes, pb->bags, enc->nid, + enc->iter, enc->pass))) + pb->success = 0; + } else { + if (!TEST_true(PKCS12_add_safe_ex(&pb->safes, pb->bags, enc->nid, + enc->iter, enc->pass, test_ctx, + test_propq))) + pb->success = 0; } } sk_PKCS12_SAFEBAG_pop_free(pb->bags, PKCS12_SAFEBAG_free); -- 2.47.3