diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2023-11-15 19:31:28 +0100 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2023-12-01 11:05:42 +0100 |
commit | bed7a878107818c297301c6602013d364b266c67 (patch) | |
tree | ac665c5ceaec67301e6564244aed0efdc3a60a59 /apps/cms.c | |
parent | 49e9436af3d85963fd6156b7d6f33e0734bf5ba9 (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.c | 9 |
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; } |