aboutsummaryrefslogtreecommitdiff
path: root/crypto/asn1/d2i_pr.c
diff options
context:
space:
mode:
authorKurt Roeckx <kurt@roeckx.be>2015-09-29 19:59:48 +0200
committerKurt Roeckx <kurt@roeckx.be>2015-10-03 13:22:52 +0200
commit605236f6a8fe0743af2f63d93239a74c69dae137 (patch)
treee8f5915d9a6ecc713cd9593514220474748c416e /crypto/asn1/d2i_pr.c
parent9982cbbbf65473418661f5aa1f05e7ef88ada801 (diff)
downloadopenssl-605236f6a8fe0743af2f63d93239a74c69dae137.zip
openssl-605236f6a8fe0743af2f63d93239a74c69dae137.tar.gz
openssl-605236f6a8fe0743af2f63d93239a74c69dae137.tar.bz2
Fix more d2i cases to properly update the input pointer
Thanks to David Benjamin <davidben@google.com> for pointing them out. Reviewed-by: Steve Henson <steve@openssl.org> MR #1198
Diffstat (limited to 'crypto/asn1/d2i_pr.c')
-rw-r--r--crypto/asn1/d2i_pr.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/crypto/asn1/d2i_pr.c b/crypto/asn1/d2i_pr.c
index 90ec2f4..1b6f8eb 100644
--- a/crypto/asn1/d2i_pr.c
+++ b/crypto/asn1/d2i_pr.c
@@ -104,7 +104,8 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
EVP_PKEY_free(ret);
ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8);
-
+ if (ret == NULL)
+ goto err;
} else {
ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB);
goto err;
@@ -160,8 +161,9 @@ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
}
ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8);
- if (ret != NULL)
- *pp = p;
+ if (ret == NULL)
+ return NULL;
+ *pp = p;
if (a) {
*a = ret;
}