mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-07-29 11:41:15 +03:00
Fix oid memory leak
Signed-off-by: Agathiyan Bragadeesh <agathiyan.bragadeesh2@arm.com>
This commit is contained in:
@ -285,7 +285,7 @@ int mbedtls_x509_string_to_names(mbedtls_asn1_named_data **head, const char *nam
|
|||||||
numericoid = 1;
|
numericoid = 1;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
oid = malloc(strlen(attr_descr->oid));
|
oid = calloc(1, strlen(attr_descr->oid));
|
||||||
strcpy(oid, attr_descr->oid);
|
strcpy(oid, attr_descr->oid);
|
||||||
numericoid = 0;
|
numericoid = 0;
|
||||||
}
|
}
|
||||||
@ -300,11 +300,13 @@ int mbedtls_x509_string_to_names(mbedtls_asn1_named_data **head, const char *nam
|
|||||||
parse_attribute_value_ber_encoded(s, (int) (c - s), data, &data_len,
|
parse_attribute_value_ber_encoded(s, (int) (c - s), data, &data_len,
|
||||||
&tag)) != 0) {
|
&tag)) != 0) {
|
||||||
if (numericoid) {
|
if (numericoid) {
|
||||||
|
mbedtls_free(oid);
|
||||||
return MBEDTLS_ERR_X509_INVALID_NAME;
|
return MBEDTLS_ERR_X509_INVALID_NAME;
|
||||||
} else {
|
} else {
|
||||||
if ((parse_ret =
|
if ((parse_ret =
|
||||||
parse_attribute_value_string(s, (int) (c - s), data,
|
parse_attribute_value_string(s, (int) (c - s), data,
|
||||||
&data_len)) != 0) {
|
&data_len)) != 0) {
|
||||||
|
mbedtls_free(oid);
|
||||||
return parse_ret;
|
return parse_ret;
|
||||||
}
|
}
|
||||||
tag = attr_descr->default_tag;
|
tag = attr_descr->default_tag;
|
||||||
@ -314,11 +316,13 @@ int mbedtls_x509_string_to_names(mbedtls_asn1_named_data **head, const char *nam
|
|||||||
if (!numericoid) {
|
if (!numericoid) {
|
||||||
if ((parse_ret =
|
if ((parse_ret =
|
||||||
parse_attribute_value_string(s, (int) (c - s), data, &data_len)) != 0) {
|
parse_attribute_value_string(s, (int) (c - s), data, &data_len)) != 0) {
|
||||||
|
mbedtls_free(oid);
|
||||||
return parse_ret;
|
return parse_ret;
|
||||||
}
|
}
|
||||||
tag = attr_descr->default_tag;
|
tag = attr_descr->default_tag;
|
||||||
}
|
}
|
||||||
if (numericoid) {
|
if (numericoid) {
|
||||||
|
mbedtls_free(oid);
|
||||||
return MBEDTLS_ERR_X509_INVALID_NAME;
|
return MBEDTLS_ERR_X509_INVALID_NAME;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -327,6 +331,7 @@ int mbedtls_x509_string_to_names(mbedtls_asn1_named_data **head, const char *nam
|
|||||||
(unsigned char *) data,
|
(unsigned char *) data,
|
||||||
data_len);
|
data_len);
|
||||||
mbedtls_free(oid);
|
mbedtls_free(oid);
|
||||||
|
oid = NULL;
|
||||||
if (cur == NULL) {
|
if (cur == NULL) {
|
||||||
return MBEDTLS_ERR_X509_ALLOC_FAILED;
|
return MBEDTLS_ERR_X509_ALLOC_FAILED;
|
||||||
}
|
}
|
||||||
@ -346,6 +351,9 @@ int mbedtls_x509_string_to_names(mbedtls_asn1_named_data **head, const char *nam
|
|||||||
}
|
}
|
||||||
c++;
|
c++;
|
||||||
}
|
}
|
||||||
|
if (oid != NULL) {
|
||||||
|
mbedtls_free(oid);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user