diff options
| author | Yuval Adam <_@yuv.al> | 2018-02-27 18:59:46 +0200 |
|---|---|---|
| committer | Yuval Adam <_@yuv.al> | 2018-02-27 18:59:46 +0200 |
| commit | 8bb0de4b4ad09694c7ce72d75f8876ff7a04a610 (patch) | |
| tree | d5ab3fb586945aad010c7d4d254407b875c97e94 | |
| parent | a0a3fe51c7c785e75da3ad92d8baf3974cde0de9 (diff) | |
Fix typed array parsing
| -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: |
