提交 037241bf 编写于 作者: R Rich Salz

Check for failures, to avoid memory leak

Thanks to Jiecheng Wu, Zuxing Gu for the report.
Reviewed-by: NAndy Polyakov <appro@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/6791)
上级 80ae7285
...@@ -92,19 +92,19 @@ static int eckey_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey) ...@@ -92,19 +92,19 @@ static int eckey_pub_encode(X509_PUBKEY *pk, const EVP_PKEY *pkey)
static EC_KEY *eckey_type2param(int ptype, const void *pval) static EC_KEY *eckey_type2param(int ptype, const void *pval)
{ {
EC_KEY *eckey = NULL; EC_KEY *eckey = NULL;
EC_GROUP *group = NULL;
if (ptype == V_ASN1_SEQUENCE) { if (ptype == V_ASN1_SEQUENCE) {
const ASN1_STRING *pstr = pval; const ASN1_STRING *pstr = pval;
const unsigned char *pm = NULL; const unsigned char *pm = pstr->data;
int pmlen; int pmlen = pstr->length;
pm = pstr->data;
pmlen = pstr->length;
if ((eckey = d2i_ECParameters(NULL, &pm, pmlen)) == NULL) { if ((eckey = d2i_ECParameters(NULL, &pm, pmlen)) == NULL) {
ECerr(EC_F_ECKEY_TYPE2PARAM, EC_R_DECODE_ERROR); ECerr(EC_F_ECKEY_TYPE2PARAM, EC_R_DECODE_ERROR);
goto ecerr; goto ecerr;
} }
} else if (ptype == V_ASN1_OBJECT) { } else if (ptype == V_ASN1_OBJECT) {
const ASN1_OBJECT *poid = pval; const ASN1_OBJECT *poid = pval;
EC_GROUP *group;
/* /*
* type == V_ASN1_OBJECT => the parameters are given by an asn1 OID * type == V_ASN1_OBJECT => the parameters are given by an asn1 OID
...@@ -129,6 +129,7 @@ static EC_KEY *eckey_type2param(int ptype, const void *pval) ...@@ -129,6 +129,7 @@ static EC_KEY *eckey_type2param(int ptype, const void *pval)
ecerr: ecerr:
EC_KEY_free(eckey); EC_KEY_free(eckey);
EC_GROUP_free(group);
return NULL; return NULL;
} }
......
...@@ -122,13 +122,12 @@ static TLS_FEATURE *v2i_TLS_FEATURE(const X509V3_EXT_METHOD *method, ...@@ -122,13 +122,12 @@ static TLS_FEATURE *v2i_TLS_FEATURE(const X509V3_EXT_METHOD *method,
} }
} }
ai = ASN1_INTEGER_new(); if ((ai = ASN1_INTEGER_new()) == NULL
if (ai == NULL) { || !ASN1_INTEGER_set(ai, tlsextid)
|| sk_ASN1_INTEGER_push(tlsf, ai) <= 0) {
X509V3err(X509V3_F_V2I_TLS_FEATURE, ERR_R_MALLOC_FAILURE); X509V3err(X509V3_F_V2I_TLS_FEATURE, ERR_R_MALLOC_FAILURE);
goto err; goto err;
} }
ASN1_INTEGER_set(ai, tlsextid);
sk_ASN1_INTEGER_push(tlsf, ai);
} }
return tlsf; return tlsf;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册