david/ipxe
david
/
ipxe
Archived
1
0
Fork 0

[rsa] Actually check the unused-bits byte in the public key bit string

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown 2012-03-18 20:42:03 +00:00
parent 3ec773cd2b
commit d6979e0d55
1 changed files with 4 additions and 3 deletions

View File

@ -236,12 +236,13 @@ static int rsa_init ( void *ctx, const void *key, size_t key_len ) {
/* Check and skip unused-bits byte of bit string */
bit_string = cursor.data;
if ( cursor.len < 1 ) {
if ( ( cursor.len < sizeof ( *bit_string ) ) ||
( bit_string->unused != 0 ) ) {
rc = -EINVAL;
goto err_parse;
}
cursor.data++;
cursor.len--;
cursor.data = &bit_string->data;
cursor.len -= offsetof ( typeof ( *bit_string ), data );
/* Enter RSAPublicKey */
asn1_enter ( &cursor, ASN1_SEQUENCE );