mirror of
https://github.com/python/cpython.git
synced 2025-10-09 08:31:26 +00:00
SF #1022953: binascii.a2b_hqx("") raises SystemError
Several functions adopted the strategy of altering a full lengthed string copy and resizing afterwards. That would fail if the initial string was short enough (0 or 1) to be interned. Interning precluded the subsequent resizing operation. The solution was to make sure the initial string was at least two characters long. Added tests to verify that all binascii functions do not crater when given an empty string argument.
This commit is contained in:
parent
8158e84930
commit
658717ed11
2 changed files with 26 additions and 5 deletions
|
@ -148,6 +148,16 @@ class BinASCIITest(unittest.TestCase):
|
|||
"0"*75+"=\r\n=FF\r\n=FF\r\n=FF"
|
||||
)
|
||||
|
||||
def test_empty_string(self):
|
||||
# A test for SF bug #1022953. Make sure SystemError is not raised.
|
||||
for n in ['b2a_qp', 'a2b_hex', 'b2a_base64', 'a2b_uu', 'a2b_qp',
|
||||
'b2a_hex', 'unhexlify', 'hexlify', 'crc32', 'b2a_hqx',
|
||||
'a2b_hqx', 'a2b_base64', 'rlecode_hqx', 'b2a_uu',
|
||||
'rledecode_hqx']:
|
||||
f = getattr(binascii, n)
|
||||
f('')
|
||||
binascii.crc_hqx('', 0)
|
||||
|
||||
def test_main():
|
||||
test_support.run_unittest(BinASCIITest)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue