]> git.ipfire.org Git - thirdparty/openssl.git/commitdiff
crypto/pkcs7/pk7_smime.c: Add BIO_free() to avoid memory leak
authorJiashengJiang <jiasheng@purdue.edu>
Thu, 22 May 2025 01:12:18 +0000 (21:12 -0400)
committerTomas Mraz <tomas@openssl.org>
Tue, 27 May 2025 17:49:38 +0000 (19:49 +0200)
Add BIO_free() to free tmpout if OPENSSL_malloc() fails to avoid memory leak.

Fixes: 8e70485 ("RT3955: Reduce some stack usage")
Signed-off-by: JiashengJiang <jiasheng@purdue.edu>
Reviewed-by: Shane Lontis <shane.lontis@oracle.com>
Reviewed-by: Tomas Mraz <tomas@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/27631)

(cherry picked from commit 9882d389df71ef7163c7769b4431a0dbe713ab65)

crypto/pkcs7/pk7_smime.c

index 747c41771866e5071f9b587c7939a610a6d8c31f..0b813fd92bc3efe45fbcd253f17b60288f552972 100644 (file)
@@ -326,10 +326,8 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
     if (flags & PKCS7_TEXT) {
         if (!SMIME_text(tmpout, out)) {
             ERR_raise(ERR_LIB_PKCS7, PKCS7_R_SMIME_TEXT_ERROR);
-            BIO_free(tmpout);
             goto err;
         }
-        BIO_free(tmpout);
     }
 
     /* Now Verify All Signatures */
@@ -347,6 +345,8 @@ int PKCS7_verify(PKCS7 *p7, STACK_OF(X509) *certs, X509_STORE *store,
     ret = 1;
 
  err:
+    if (flags & PKCS7_TEXT)
+        BIO_free(tmpout);
     X509_STORE_CTX_free(cert_ctx);
     OPENSSL_free(buf);
     if (indata != NULL)