diff options
| -rw-r--r-- | viewstate/parse.py | 11 |
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: |
