diff options
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_crt.c')
| -rw-r--r-- | src/lib/libcrypto/pkcs12/p12_crt.c | 10 |
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, | |||
| 250 | err: | 254 | err: |
| 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 | } |
