提交 9f01a8ac 编写于 作者: J Jonas Maebe 提交者: Kurt Roeckx

process_pci_value: free (*policy)->data before setting to NULL after failed realloc

Signed-off-by: NKurt Roeckx <kurt@openssl.org>
Reviewed-by: NRich Salz <rsalz@openssl.org>
上级 259ac68a
...@@ -149,6 +149,7 @@ static int process_pci_value(CONF_VALUE *val, ...@@ -149,6 +149,7 @@ static int process_pci_value(CONF_VALUE *val,
{ {
OPENSSL_free(tmp_data2); OPENSSL_free(tmp_data2);
/* realloc failure implies the original data space is b0rked too! */ /* realloc failure implies the original data space is b0rked too! */
OPENSSL_free((*policy)->data);
(*policy)->data = NULL; (*policy)->data = NULL;
(*policy)->length = 0; (*policy)->length = 0;
X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE); X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE);
...@@ -177,7 +178,15 @@ static int process_pci_value(CONF_VALUE *val, ...@@ -177,7 +178,15 @@ static int process_pci_value(CONF_VALUE *val,
(*policy)->length + n + 1); (*policy)->length + n + 1);
if (!tmp_data) if (!tmp_data)
break; {
OPENSSL_free((*policy)->data);
(*policy)->data = NULL;
(*policy)->length = 0;
X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE);
X509V3_conf_err(val);
BIO_free_all(b);
goto err;
}
(*policy)->data = tmp_data; (*policy)->data = tmp_data;
memcpy(&(*policy)->data[(*policy)->length], memcpy(&(*policy)->data[(*policy)->length],
...@@ -210,6 +219,7 @@ static int process_pci_value(CONF_VALUE *val, ...@@ -210,6 +219,7 @@ static int process_pci_value(CONF_VALUE *val,
else else
{ {
/* realloc failure implies the original data space is b0rked too! */ /* realloc failure implies the original data space is b0rked too! */
OPENSSL_free((*policy)->data);
(*policy)->data = NULL; (*policy)->data = NULL;
(*policy)->length = 0; (*policy)->length = 0;
X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE); X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册