提交 605236f6 编写于 作者: K Kurt Roeckx

Fix more d2i cases to properly update the input pointer

Thanks to David Benjamin <davidben@google.com> for pointing them out.
Reviewed-by: NSteve Henson <steve@openssl.org>
MR #1198
上级 9982cbbb
...@@ -104,7 +104,8 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp, ...@@ -104,7 +104,8 @@ EVP_PKEY *d2i_PrivateKey(int type, EVP_PKEY **a, const unsigned char **pp,
EVP_PKEY_free(ret); EVP_PKEY_free(ret);
ret = EVP_PKCS82PKEY(p8); ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8); PKCS8_PRIV_KEY_INFO_free(p8);
if (ret == NULL)
goto err;
} else { } else {
ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB); ASN1err(ASN1_F_D2I_PRIVATEKEY, ERR_R_ASN1_LIB);
goto err; goto err;
...@@ -160,7 +161,8 @@ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp, ...@@ -160,7 +161,8 @@ EVP_PKEY *d2i_AutoPrivateKey(EVP_PKEY **a, const unsigned char **pp,
} }
ret = EVP_PKCS82PKEY(p8); ret = EVP_PKCS82PKEY(p8);
PKCS8_PRIV_KEY_INFO_free(p8); PKCS8_PRIV_KEY_INFO_free(p8);
if (ret != NULL) if (ret == NULL)
return NULL;
*pp = p; *pp = p;
if (a) { if (a) {
*a = ret; *a = ret;
......
...@@ -184,9 +184,7 @@ X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length) ...@@ -184,9 +184,7 @@ X509 *d2i_X509_AUX(X509 **a, const unsigned char **pp, long length)
return NULL; return NULL;
/* update length */ /* update length */
length -= q - *pp; length -= q - *pp;
if (!length) if (length > 0 && !d2i_X509_CERT_AUX(&ret->aux, &q, length))
return ret;
if (!d2i_X509_CERT_AUX(&ret->aux, &q, length))
goto err; goto err;
*pp = q; *pp = q;
return ret; return ret;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册