summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/pkcs12/p12_decr.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/pkcs12/p12_decr.c')
-rw-r--r--src/lib/libcrypto/pkcs12/p12_decr.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/lib/libcrypto/pkcs12/p12_decr.c b/src/lib/libcrypto/pkcs12/p12_decr.c
index b6bd508bf1..13be237b4c 100644
--- a/src/lib/libcrypto/pkcs12/p12_decr.c
+++ b/src/lib/libcrypto/pkcs12/p12_decr.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: p12_decr.c,v 1.13 2014/07/11 08:44:49 jsing Exp $ */ 1/* $OpenBSD: p12_decr.c,v 1.14 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 1999. 3 * project 1999.
4 */ 4 */
@@ -166,19 +166,23 @@ PKCS12_item_i2d_encrypt(X509_ALGOR *algor, const ASN1_ITEM *it,
166 if (!in) { 166 if (!in) {
167 PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT, 167 PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,
168 PKCS12_R_ENCODE_ERROR); 168 PKCS12_R_ENCODE_ERROR);
169 return NULL; 169 goto err;
170 } 170 }
171 if (!PKCS12_pbe_crypt(algor, pass, passlen, in, inlen, &oct->data, 171 if (!PKCS12_pbe_crypt(algor, pass, passlen, in, inlen, &oct->data,
172 &oct->length, 1)) { 172 &oct->length, 1)) {
173 PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT, 173 PKCS12err(PKCS12_F_PKCS12_ITEM_I2D_ENCRYPT,
174 PKCS12_R_ENCRYPT_ERROR); 174 PKCS12_R_ENCRYPT_ERROR);
175 free(in); 175 goto err;
176 return NULL;
177 } 176 }
178 if (zbuf) 177 if (zbuf)
179 OPENSSL_cleanse(in, inlen); 178 OPENSSL_cleanse(in, inlen);
180 free(in); 179 free(in);
181 return oct; 180 return oct;
181
182err:
183 free(in);
184 M_ASN1_OCTET_STRING_free(oct);
185 return NULL;
182} 186}
183 187
184IMPLEMENT_PKCS12_STACK_OF(PKCS7) 188IMPLEMENT_PKCS12_STACK_OF(PKCS7)