Skip to content
Snippets Groups Projects
Commit a1bf5c43 authored by Holger Hans Peter Freyther's avatar Holger Hans Peter Freyther
Browse files

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]
parent 4807dd9b
No related merge requests found
......@@ -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)):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment