Fix BER decoding for the long form
The below ASN1 was parsed as "long form" even if it is not the long form. The highest bit indicates if it is the long form or the indefinite form. The below was going through the long form path but there is no long form in it. Change the long form code but don't verify it. It might still be broken. [98, 87, 130, 2, 120, 33, 131, 2, 127, 255, 132, 16, 160, 0, 0, 0, 135, 16, 2, 255, 255, 255, 255, 137, 7, 9, 0, 0, 165, 22, 131, 2, 127, 255, 203, 13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 202, 1, 128, 138, 1, 5, 171, 21, 128, 1, 1, 164, 6, 131, 1, 10, 149, 1, 8, 128, 1, 64, 151, 0, 128, 1, 6, 144, 0, 198, 9, 144, 1, 64, 131, 1, 1, 131, 1, 129]
This commit is contained in:
parent
4807dd9b21
commit
a1bf5c43e7
|
@ -163,8 +163,8 @@ def first_BERTLV_parser(bytelist):
|
|||
Tag_num += Tag_bits[len(Tag_bits)-j-1] * pow(2, j)
|
||||
|
||||
# Length coded with more than 1 byte
|
||||
if bytelist[i+1] > 0x50:
|
||||
Len_num = bytelist[i+1] - 0x50
|
||||
if bytelist[i+1] & 0x80 > 0:
|
||||
Len_num = bytelist[i+1] - 0x80
|
||||
Len_bytes = bytelist[i+2:i+1+Len_num]
|
||||
Len = 0
|
||||
for j in range(len(Len_bytes)):
|
||||
|
|
Loading…
Reference in New Issue