mirror of
https://github.com/ARM-software/arm-trusted-firmware.git
synced 2025-04-19 19:14:28 +00:00
fix(auth): forbid junk after extensions
The extensions must use all remaining bytes in the TBSCertificate. Change-Id: Idf48f7168e146d050ba62dbc732638946fcd6c92 Signed-off-by: Demi Marie Obenour <demiobenour@gmail.com>
This commit is contained in:
parent
e9e4a2a6fd
commit
fd37982a19
1 changed files with 5 additions and 3 deletions
|
@ -304,24 +304,26 @@ static int cert_parse(void *img, unsigned int img_len)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* extensions [3] EXPLICIT Extensions OPTIONAL
|
* extensions [3] EXPLICIT Extensions OPTIONAL
|
||||||
|
* -- must use all remaining bytes in TBSCertificate
|
||||||
*/
|
*/
|
||||||
ret = mbedtls_asn1_get_tag(&p, end, &len,
|
ret = mbedtls_asn1_get_tag(&p, end, &len,
|
||||||
MBEDTLS_ASN1_CONTEXT_SPECIFIC |
|
MBEDTLS_ASN1_CONTEXT_SPECIFIC |
|
||||||
MBEDTLS_ASN1_CONSTRUCTED | 3);
|
MBEDTLS_ASN1_CONSTRUCTED | 3);
|
||||||
if (ret != 0) {
|
if ((ret != 0) || (len != (size_t)(end - p))) {
|
||||||
return IMG_PARSER_ERR_FORMAT;
|
return IMG_PARSER_ERR_FORMAT;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
|
* Extensions ::= SEQUENCE SIZE (1..MAX) OF Extension
|
||||||
|
* -- must use all remaining bytes in TBSCertificate
|
||||||
*/
|
*/
|
||||||
v3_ext.p = p;
|
v3_ext.p = p;
|
||||||
ret = mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_CONSTRUCTED |
|
ret = mbedtls_asn1_get_tag(&p, end, &len, MBEDTLS_ASN1_CONSTRUCTED |
|
||||||
MBEDTLS_ASN1_SEQUENCE);
|
MBEDTLS_ASN1_SEQUENCE);
|
||||||
if (ret != 0) {
|
if ((ret != 0) || (len != (size_t)(end - p))) {
|
||||||
return IMG_PARSER_ERR_FORMAT;
|
return IMG_PARSER_ERR_FORMAT;
|
||||||
}
|
}
|
||||||
v3_ext.len = (p + len) - v3_ext.p;
|
v3_ext.len = end - v3_ext.p;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Check extensions integrity
|
* Check extensions integrity
|
||||||
|
|
Loading…
Add table
Reference in a new issue