[crypto] Allow for zero-length ASN.1 cursors
authorMichael Brown <mcb30@ipxe.org>
Fri, 11 Mar 2016 16:51:13 +0000 (16:51 +0000)
committerMichael Brown <mcb30@ipxe.org>
Fri, 11 Mar 2016 16:58:51 +0000 (16:58 +0000)
commit5a6ed90a00ea8b1070c808e4f7d5da173b2e848f
tree65c60b99af5ea48cd8d81cf13152854d0fdbebff
parent05dcb07cb239d8b7abe33f7701dbb81f370cea4b
[crypto] Allow for zero-length ASN.1 cursors

The assumption in asn1_type() that an ASN.1 cursor will always contain
a type byte is incorrect.  A cursor that has been cleanly invalidated
via asn1_invalidate_cursor() will contain a type byte, but there are
other ways in which to arrive at a zero-length cursor.

Fix by explicitly checking the cursor length in asn1_type().  This
allows asn1_invalidate_cursor() to be reduced to simply zeroing the
length field.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
src/crypto/asn1.c
src/include/ipxe/asn1.h