mirror of
https://github.com/python/cpython.git
synced 2025-08-10 03:49:18 +00:00
[3.12] gh-118314: Fix padding edge case in binascii.a2b_base64 strict mode (GH-118320) (GH-118691)
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.
(cherry picked from commit fe47d9bee3
)
Co-authored-by: Youfu Zhang <1315097+zhangyoufu@users.noreply.github.com>
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
Co-authored-by: Pieter Eendebak <pieter.eendebak@gmail.com>
This commit is contained in:
parent
7b25d945e0
commit
56c61cc564
3 changed files with 23 additions and 0 deletions
|
@ -132,13 +132,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')
|
||||
|
@ -150,8 +158,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):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue