summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2018-02-27 18:59:46 +0200
committerYuval Adam <_@yuv.al>2018-02-27 18:59:46 +0200
commit8bb0de4b4ad09694c7ce72d75f8876ff7a04a610 (patch)
treed5ab3fb586945aad010c7d4d254407b875c97e94
parenta0a3fe51c7c785e75da3ad92d8baf3974cde0de9 (diff)
Fix typed array parsing
-rw-r--r--viewstate/parse.py11
1 files changed, 10 insertions, 1 deletions
diff --git a/viewstate/parse.py b/viewstate/parse.py
index 4ed07a3..44f99ae 100644
--- a/viewstate/parse.py
+++ b/viewstate/parse.py
@@ -95,6 +95,15 @@ def parse_type(b):
else:
raise ViewStateException(f'Unknown type flag at {len(b)} bytes {b[:20]}')
+def parse_typed_array(b):
+ typeval, remain = parse_type(b)
+ n, remain = parse_int(remain)
+ l = []
+ for _ in range(n):
+ val, remain = parse(remain)
+ l.append(val)
+ return l, remain
+
def parse(b):
if not b:
return None
@@ -112,7 +121,7 @@ def parse(b):
elif b[0] == 0xf:
return parse_pair(b[1:])
elif b[0] == 0x14:
- return parse_type(b[1:])
+ return parse_typed_array(b[1:])
elif b[0] == 0x15:
return parse_str_array(b[1:])
elif b[0] == 0x16: