From 8bb0de4b4ad09694c7ce72d75f8876ff7a04a610 Mon Sep 17 00:00:00 2001 From: Yuval Adam <_@yuv.al> Date: Tue, 27 Feb 2018 18:59:46 +0200 Subject: Fix typed array parsing --- viewstate/parse.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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: -- cgit v1.3.1