diff options
| author | Youfu Zhang <1315097+zhangyoufu@users.noreply.github.com> | 2024-05-07 09:18:45 (GMT) |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-05-07 09:18:45 (GMT) |
| commit | fe47d9bee319528ffeb5fd60a615d7f02c7b5585 (patch) | |
| tree | 3f4b3040b7899cb86a994ba098f3f63b9f53d34a /Lib/test/test_binascii.py | |
| parent | 3a6ff1b1d959549546f533b18ec71aa21516328d (diff) | |
| download | cpython-fe47d9bee319528ffeb5fd60a615d7f02c7b5585.zip cpython-fe47d9bee319528ffeb5fd60a615d7f02c7b5585.tar.gz cpython-fe47d9bee319528ffeb5fd60a615d7f02c7b5585.tar.bz2 | |
gh-118314: Fix padding edge case in binascii.a2b_base64 strict mode (GH-118320)
Fix an edge case in `binascii.a2b_base64` strict mode, where
excessive padding was not detected when no padding is necessary.
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Co-authored-by: Pieter Eendebak <pieter.eendebak@gmail.com>
Diffstat (limited to 'Lib/test/test_binascii.py')
| -rw-r--r-- | Lib/test/test_binascii.py | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/test/test_binascii.py b/Lib/test/test_binascii.py index 82dea8a..1f3b674 100644 --- a/Lib/test/test_binascii.py +++ b/Lib/test/test_binascii.py @@ -139,13 +139,21 @@ class BinASCIITest(unittest.TestCase): def assertDiscontinuousPadding(data, non_strict_mode_expected_result: bytes): _assertRegexTemplate(r'(?i)Discontinuous padding', data, non_strict_mode_expected_result) + def assertExcessPadding(data, non_strict_mode_expected_result: bytes): + _assertRegexTemplate(r'(?i)Excess padding', data, non_strict_mode_expected_result) + # Test excess data exceptions assertExcessData(b'ab==a', b'i') assertExcessData(b'ab===', b'i') + assertExcessData(b'ab====', b'i') assertExcessData(b'ab==:', b'i') assertExcessData(b'abc=a', b'i\xb7') assertExcessData(b'abc=:', b'i\xb7') assertExcessData(b'ab==\n', b'i') + assertExcessData(b'abc==', b'i\xb7') + assertExcessData(b'abc===', b'i\xb7') + assertExcessData(b'abc====', b'i\xb7') + assertExcessData(b'abc=====', b'i\xb7') # Test non-base64 data exceptions assertNonBase64Data(b'\nab==', b'i') @@ -157,8 +165,15 @@ class BinASCIITest(unittest.TestCase): assertLeadingPadding(b'=', b'') assertLeadingPadding(b'==', b'') assertLeadingPadding(b'===', b'') + assertLeadingPadding(b'====', b'') + assertLeadingPadding(b'=====', b'') assertDiscontinuousPadding(b'ab=c=', b'i\xb7') assertDiscontinuousPadding(b'ab=ab==', b'i\xb6\x9b') + assertExcessPadding(b'abcd=', b'i\xb7\x1d') + assertExcessPadding(b'abcd==', b'i\xb7\x1d') + assertExcessPadding(b'abcd===', b'i\xb7\x1d') + assertExcessPadding(b'abcd====', b'i\xb7\x1d') + assertExcessPadding(b'abcd=====', b'i\xb7\x1d') def test_base64errors(self): |
