Limit OIDs to 128 components
The longest OID known by oid-info.com is 34 components[1], so 128 should be plenty and will limit the potential for attacks. [1] http://oid-info.com/get/1.3.6.1.4.1.1248.1.1.2.1.3.21.69.112.115.111.110.32.83.116.121.108.117.115.32.80.114.111.32.52.57.48.48 Signed-off-by: David Horstmann <david.horstmann@arm.com>
This commit is contained in:
parent
861e5d2742
commit
9643575d92
3 changed files with 9 additions and 1 deletions
|
@ -63,6 +63,11 @@
|
||||||
#define MBEDTLS_OID_X509_EXT_FRESHEST_CRL (1 << 14)
|
#define MBEDTLS_OID_X509_EXT_FRESHEST_CRL (1 << 14)
|
||||||
#define MBEDTLS_OID_X509_EXT_NS_CERT_TYPE (1 << 16)
|
#define MBEDTLS_OID_X509_EXT_NS_CERT_TYPE (1 << 16)
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Maximum number of OID components allowed
|
||||||
|
*/
|
||||||
|
#define MBEDTLS_OID_MAX_COMPONENTS 128
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Top level OID tuples
|
* Top level OID tuples
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -963,7 +963,7 @@ int mbedtls_oid_from_numeric_string(mbedtls_asn1_buf *oid,
|
||||||
/* Allocate maximum possible required memory:
|
/* Allocate maximum possible required memory:
|
||||||
* There are (num_dots + 1) integer components, but the first 2 share the
|
* There are (num_dots + 1) integer components, but the first 2 share the
|
||||||
* same subidentifier, so we only need num_dots subidentifiers maximum. */
|
* same subidentifier, so we only need num_dots subidentifiers maximum. */
|
||||||
if (num_dots == 0 || (num_dots > SIZE_MAX / sizeof(unsigned int))) {
|
if (num_dots == 0 || (num_dots > MBEDTLS_OID_MAX_COMPONENTS - 1)) {
|
||||||
return MBEDTLS_ERR_ASN1_INVALID_DATA;
|
return MBEDTLS_ERR_ASN1_INVALID_DATA;
|
||||||
}
|
}
|
||||||
size_t max_possible_bytes = num_dots * sizeof(unsigned int);
|
size_t max_possible_bytes = num_dots * sizeof(unsigned int);
|
||||||
|
|
|
@ -158,3 +158,6 @@ oid_from_numeric_string:"1.2/3.4":MBEDTLS_ERR_ASN1_INVALID_DATA:""
|
||||||
|
|
||||||
OID from numeric string - non-'.' separator between third and fourth
|
OID from numeric string - non-'.' separator between third and fourth
|
||||||
oid_from_numeric_string:"1.2.3/4":MBEDTLS_ERR_ASN1_INVALID_DATA:""
|
oid_from_numeric_string:"1.2.3/4":MBEDTLS_ERR_ASN1_INVALID_DATA:""
|
||||||
|
|
||||||
|
OID from numeric string - OID greater than max length (129 components)
|
||||||
|
oid_from_numeric_string:"1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1.2.3.4.5.6.7.8.1":MBEDTLS_ERR_ASN1_INVALID_DATA:""
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue