summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNiels Dossche <niels.dossche@ugent.be>2024-10-28 17:04:03 +0100
committerTomas Mraz <tomas@openssl.org>2025-01-06 21:32:50 +0100
commitf822a4866894ed8a752ad93c228fb76a8bb206e8 (patch)
treeb5feb0ee37ffb381402b7c95be6198a0b534139c
parentFix a potential misaligned memory access (diff)
downloadopenssl-f822a4866894ed8a752ad93c228fb76a8bb206e8.tar.xz
openssl-f822a4866894ed8a752ad93c228fb76a8bb206e8.zip
Fix potential memory leak in PKCS12_add_key_ex()
p8 is allocated using EVP_PKEY2PKCS8(), but when PKCS8_add_keyusage() fails this memory is not freed. Fix this by adding a call to PKCS8_PRIV_KEY_INFO_free(). Reviewed-by: Frederik Wedel-Heinen <fwh.openssl@gmail.com> Reviewed-by: Hugo Landau <hlandau@devever.net> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/25818)
-rw-r--r--crypto/pkcs12/p12_crt.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/crypto/pkcs12/p12_crt.c b/crypto/pkcs12/p12_crt.c
index e6a2a3c55b..65d6556917 100644
--- a/crypto/pkcs12/p12_crt.c
+++ b/crypto/pkcs12/p12_crt.c
@@ -246,8 +246,10 @@ PKCS12_SAFEBAG *PKCS12_add_key_ex(STACK_OF(PKCS12_SAFEBAG) **pbags,
/* Make a PKCS#8 structure */
if ((p8 = EVP_PKEY2PKCS8(key)) == NULL)
goto err;
- if (key_usage && !PKCS8_add_keyusage(p8, key_usage))
+ if (key_usage && !PKCS8_add_keyusage(p8, key_usage)) {
+ PKCS8_PRIV_KEY_INFO_free(p8);
goto err;
+ }
if (nid_key != -1) {
/* This call does not take ownership of p8 */
bag = PKCS12_SAFEBAG_create_pkcs8_encrypt_ex(nid_key, pass, -1, NULL, 0,