mirror of https://gerrit.osmocom.org/pysim
utils: Fix BER-TLV tag decode for multi-byte tags
We cannot simply skip anything that has 0xFF as first byte to detect the padding after the end of a TLV object: 0xFF may very well be a valid first octet of a multi-octet TAG: Tags of private class (11) with constructed (1) payload will have 0xFF as first octet. So let's expand the check to only detect padding in case of either only a single byte FF being left, or two FF following each other [with whatever suffix]. Change-Id: I5d64ce9ef1d973804daabae0b15c2e2349e6fab9
This commit is contained in:
parent
5895380a45
commit
9a75410a88
|
@ -173,7 +173,8 @@ def bertlv_parse_tag_raw(binary:bytes) -> Tuple[int, bytes]:
|
|||
Returns:
|
||||
Tuple of (tag:int, remainder:bytes)
|
||||
"""
|
||||
if binary[0] == 0xff:
|
||||
# check for FF padding at the end, as customary in SIM card files
|
||||
if binary[0] == 0xff and len(binary) == 1 or binary[0] == 0xff and binary[1] == 0xff:
|
||||
return None, binary
|
||||
tag = binary[0] & 0x1f
|
||||
if tag <= 30:
|
||||
|
|
Loading…
Reference in New Issue