Commit 53b38d37 authored by Nils Larsch's avatar Nils Larsch
Browse files

fix potential memory leak + improved error checking

PR: 1182
parent 8f2e4fdf
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -139,7 +139,15 @@ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
	CONF_VALUE *cnf;
	CONF_VALUE *cnf;
	int i, ia5org;
	int i, ia5org;
	pols = sk_POLICYINFO_new_null();
	pols = sk_POLICYINFO_new_null();
	if (pols == NULL) {
		X509V3err(X509V3_F_R2I_CERTPOL, ERR_R_MALLOC_FAILURE);
		return NULL;
	}
	vals =  X509V3_parse_list(value);
	vals =  X509V3_parse_list(value);
	if (vals == NULL) {
		X509V3err(X509V3_F_R2I_CERTPOL, ERR_R_X509V3_LIB);
		goto err;
	}
	ia5org = 0;
	ia5org = 0;
	for(i = 0; i < sk_CONF_VALUE_num(vals); i++) {
	for(i = 0; i < sk_CONF_VALUE_num(vals); i++) {
		cnf = sk_CONF_VALUE_value(vals, i);
		cnf = sk_CONF_VALUE_value(vals, i);
@@ -178,6 +186,7 @@ static STACK_OF(POLICYINFO) *r2i_certpol(X509V3_EXT_METHOD *method,
	sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
	sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
	return pols;
	return pols;
	err:
	err:
	sk_CONF_VALUE_pop_free(vals, X509V3_conf_free);
	sk_POLICYINFO_pop_free(pols, POLICYINFO_free);
	sk_POLICYINFO_pop_free(pols, POLICYINFO_free);
	return NULL;
	return NULL;
}
}