summaryrefslogtreecommitdiffstats
path: root/apps/cms.c
diff options
context:
space:
mode:
authorBernd Edlinger <bernd.edlinger@hotmail.de>2023-11-15 19:31:28 +0100
committerTomas Mraz <tomas@openssl.org>2023-12-01 11:05:42 +0100
commitbed7a878107818c297301c6602013d364b266c67 (patch)
treeac665c5ceaec67301e6564244aed0efdc3a60a59 /apps/cms.c
parent49e9436af3d85963fd6156b7d6f33e0734bf5ba9 (diff)
Fix a possible memory leak in make_receipt_request
When the CMS_ReceiptRequest cannot be created, the rct_to and rct_from may be leaked. Reviewed-by: Neil Horman <nhorman@openssl.org> Reviewed-by: Todd Short <todd.short@me.com> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/22742)
Diffstat (limited to 'apps/cms.c')
-rw-r--r--apps/cms.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/apps/cms.c b/apps/cms.c
index 9c4e4ee5e0..a16318f37c 100644
--- a/apps/cms.c
+++ b/apps/cms.c
@@ -1447,6 +1447,7 @@ static CMS_ReceiptRequest
STACK_OF(OPENSSL_STRING) *rr_from)
{
STACK_OF(GENERAL_NAMES) *rct_to = NULL, *rct_from = NULL;
+ CMS_ReceiptRequest *rr;
rct_to = make_names_stack(rr_to);
if (rct_to == NULL)
@@ -1458,10 +1459,14 @@ static CMS_ReceiptRequest
} else {
rct_from = NULL;
}
- return CMS_ReceiptRequest_create0_ex(NULL, -1, rr_allorfirst, rct_from,
- rct_to, app_get0_libctx());
+ rr = CMS_ReceiptRequest_create0_ex(NULL, -1, rr_allorfirst, rct_from,
+ rct_to, app_get0_libctx());
+ if (rr == NULL)
+ goto err;
+ return rr;
err:
sk_GENERAL_NAMES_pop_free(rct_to, GENERAL_NAMES_free);
+ sk_GENERAL_NAMES_pop_free(rct_from, GENERAL_NAMES_free);
return NULL;
}