bertlv_parse_one: Also return remainder after end of TLV

Change-Id: I10ebd87f72ee934561118b768108e5dc76277660
This commit is contained in:
Harald Welte
2021-05-21 21:47:55 +02:00
parent de02718631
commit c1475307c8
3 changed files with 6 additions and 4 deletions

View File

@@ -155,7 +155,7 @@ def bertlv_encode_len(length:int) -> bytes:
else:
raise ValueError("Length > 32bits not supported")
def bertlv_parse_one(binary:bytes) -> (dict, int, bytes):
def bertlv_parse_one(binary:bytes) -> (dict, int, bytes, bytes):
"""Parse a single TLV IE at the start of the given binary data.
Args:
binary : binary input data of BER-TLV length field
@@ -164,7 +164,9 @@ def bertlv_parse_one(binary:bytes) -> (dict, int, bytes):
"""
(tagdict, remainder) = bertlv_parse_tag(binary)
(length, remainder) = bertlv_parse_len(remainder)
return (tagdict, length, remainder)
value = remainder[:length]
remainder = remainder[length:]
return (tagdict, length, value, remainder)