diff options
author | Bernd Edlinger <bernd.edlinger@hotmail.de> | 2023-09-07 18:05:44 +0200 |
---|---|---|
committer | Tomas Mraz <tomas@openssl.org> | 2024-05-06 10:13:20 +0200 |
commit | 6d2a01cdfb56fdb8ea5d5dd417724e6906c8b8e2 (patch) | |
tree | 12682e21834812c3de91f6142e1f6dfd8c9f147b /crypto/cms/cms_smime.c | |
parent | Add processing by chunks to mac tests (diff) | |
download | openssl-6d2a01cdfb56fdb8ea5d5dd417724e6906c8b8e2.tar.xz openssl-6d2a01cdfb56fdb8ea5d5dd417724e6906c8b8e2.zip |
Fix error handling in CMS_EncryptedData_encrypt
That caused several memory leaks in case of error.
Also when the CMS object that is created by CMS_EncryptedData_encrypt
is not used in the normal way, but instead just deleted
by CMS_ContentInfo_free some memory was lost.
Fixes #21985
Reviewed-by: Todd Short <todd.short@me.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/22031)
Diffstat (limited to 'crypto/cms/cms_smime.c')
-rw-r--r-- | crypto/cms/cms_smime.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/crypto/cms/cms_smime.c b/crypto/cms/cms_smime.c index 99a72f4dff..4df4487cbc 100644 --- a/crypto/cms/cms_smime.c +++ b/crypto/cms/cms_smime.c @@ -236,7 +236,7 @@ CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, if (cms == NULL) return NULL; if (!CMS_EncryptedData_set1_key(cms, cipher, key, keylen)) - return NULL; + goto err; if (!(flags & CMS_DETACHED)) CMS_set_detached(cms, 0); @@ -245,6 +245,7 @@ CMS_ContentInfo *CMS_EncryptedData_encrypt_ex(BIO *in, const EVP_CIPHER *cipher, || CMS_final(cms, in, NULL, flags)) return cms; + err: CMS_ContentInfo_free(cms); return NULL; } |