summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pkcs12/p12_crt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_crt.c')
-rw-r--r--src/lib/libcrypto/pkcs12/p12_crt.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/lib/libcrypto/pkcs12/p12_crt.c b/src/lib/libcrypto/pkcs12/p12_crt.c
index 1d5c3dfd16..bef4d54cd9 100644
--- a/src/lib/libcrypto/pkcs12/p12_crt.c
+++ b/src/lib/libcrypto/pkcs12/p12_crt.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p12_crt.c,v 1.15 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: p12_crt.c,v 1.16 2015/02/14 12:43:07 miod Exp $ */
2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL 2/* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL
3 * project. 3 * project.
4 */ 4 */
@@ -236,8 +236,12 @@ PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, EVP_PKEY *key, int key_usage,
236 bag = PKCS12_MAKE_SHKEYBAG(nid_key, pass, -1, NULL, 0, 236 bag = PKCS12_MAKE_SHKEYBAG(nid_key, pass, -1, NULL, 0,
237 iter, p8); 237 iter, p8);
238 PKCS8_PRIV_KEY_INFO_free(p8); 238 PKCS8_PRIV_KEY_INFO_free(p8);
239 } else 239 p8 = NULL;
240 } else {
240 bag = PKCS12_MAKE_KEYBAG(p8); 241 bag = PKCS12_MAKE_KEYBAG(p8);
242 if (bag != NULL)
243 p8 = NULL;
244 }
241 245
242 if (!bag) 246 if (!bag)
243 goto err; 247 goto err;
@@ -250,6 +254,8 @@ PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags, EVP_PKEY *key, int key_usage,
250err: 254err:
251 if (bag) 255 if (bag)
252 PKCS12_SAFEBAG_free(bag); 256 PKCS12_SAFEBAG_free(bag);
257 if (p8)
258 PKCS8_PRIV_KEY_INFO_free(p8);
253 259
254 return NULL; 260 return NULL;
255} 261}