bertlv_parse_len: Fix input data is smaller than num length octets

This can happen if there's a file with invalid encoding on the card,
such as a tag followed by all-ff.  Let's gracefully ignore it and
return zero bytes as response.

Change-Id: Ic44557368a6034dbf4bb021ab23a57927c22def0
This commit is contained in:
Harald Welte 2023-12-08 16:08:53 +01:00 committed by laforge
parent 6e9ae8a584
commit b3c46135bb
1 changed files with 2 additions and 0 deletions

View File

@ -314,6 +314,8 @@ def bertlv_parse_len(binary: bytes) -> Tuple[int, bytes]:
else:
num_len_oct = binary[0] & 0x7f
length = 0
if len(binary) < num_len_oct + 1:
return (0, b'')
for i in range(1, 1+num_len_oct):
length <<= 8
length |= binary[i]