From 025e5f2b339377ebc54ebc9cab2612946145a6fa Mon Sep 17 00:00:00 2001 From: Damien George Date: Thu, 17 Aug 2017 16:16:11 +1000 Subject: py/binary: Change internal bytearray typecode from 0 to 1. The value of 0 can't be used because otherwise mp_binary_get_size will let a null byte through as the type code (intepreted as byterray). This can lead to invalid type-specifier strings being let through without an error in the struct module, and even buffer overruns. --- tests/basics/struct2.py | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'tests') diff --git a/tests/basics/struct2.py b/tests/basics/struct2.py index d8234d0d3..3b9dd5c1f 100644 --- a/tests/basics/struct2.py +++ b/tests/basics/struct2.py @@ -40,3 +40,30 @@ try: struct.calcsize('0z') except: print('Exception') + +# check that a count without a type specifier raises an exception + +try: + struct.calcsize('1') +except: + print('Exception') + +try: + struct.pack('1') +except: + print('Exception') + +try: + struct.pack_into('1', bytearray(4), 0, 'xx') +except: + print('Exception') + +try: + struct.unpack('1', 'xx') +except: + print('Exception') + +try: + struct.unpack_from('1', 'xx') +except: + print('Exception') -- cgit v1.2.3