aboutsummaryrefslogtreecommitdiffstats
path: root/pySim/utils.py
diff options
context:
space:
mode:
authorHarald Welte <laforge@osmocom.org>2021-05-21 21:47:55 +0200
committerHarald Welte <laforge@osmocom.org>2021-05-25 09:43:13 +0200
commitc1475307c85db0289d44bef7482b4c75d5a0de92 (patch)
treed03eb7fac257cc1afba7582158bbb0d8cd5c3f79 /pySim/utils.py
parentde02718631edbce9cc0aad0f55255c0b8bbb3662 (diff)
bertlv_parse_one: Also return remainder after end of TLV
Diffstat (limited to 'pySim/utils.py')
-rw-r--r--pySim/utils.py6
1 files changed, 4 insertions, 2 deletions
diff --git a/pySim/utils.py b/pySim/utils.py
index 1191983..3d96580 100644
--- a/pySim/utils.py
+++ b/pySim/utils.py
@@ -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)