diff options
author | Raymond Hettinger <python@rcn.com> | 2004-09-06 22:58:37 (GMT) |
---|---|---|
committer | Raymond Hettinger <python@rcn.com> | 2004-09-06 22:58:37 (GMT) |
commit | 658717ed117c8002d084359a3ad2f88ca7df8c99 (patch) | |
tree | 1e884ec59e3510ccc4db99290cc133f6550b43a1 /Lib/test/test_binascii.py | |
parent | 8158e849305d0e0ab3e19cdc93a86bb7d5fc0651 (diff) | |
download | cpython-658717ed117c8002d084359a3ad2f88ca7df8c99.zip cpython-658717ed117c8002d084359a3ad2f88ca7df8c99.tar.gz cpython-658717ed117c8002d084359a3ad2f88ca7df8c99.tar.bz2 |
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.
Diffstat (limited to 'Lib/test/test_binascii.py')
-rwxr-xr-x | Lib/test/test_binascii.py | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py index b01f0e0..8df4504 100755 --- a/Lib/test/test_binascii.py +++ b/Lib/test/test_binascii.py @@ -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) |