bpo-39055: Reject a trailing \n in base64.b64decode() with validate=True. (GH-17616)
(cherry picked from commit b19c0d77e6
)
Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
parent
e1caa49f68
commit
34aa3e71dc
|
@ -82,7 +82,7 @@ def b64decode(s, altchars=None, validate=False):
|
|||
altchars = _bytes_from_decode_data(altchars)
|
||||
assert len(altchars) == 2, repr(altchars)
|
||||
s = s.translate(bytes.maketrans(altchars, b'+/'))
|
||||
if validate and not re.match(b'^[A-Za-z0-9+/]*={0,2}$', s):
|
||||
if validate and not re.fullmatch(b'[A-Za-z0-9+/]*={0,2}', s):
|
||||
raise binascii.Error('Non-base64 digit found')
|
||||
return binascii.a2b_base64(s)
|
||||
|
||||
|
|
|
@ -250,6 +250,7 @@ class BaseXYTestCase(unittest.TestCase):
|
|||
(b'3d}==', b'\xdd'),
|
||||
(b'@@', b''),
|
||||
(b'!', b''),
|
||||
(b"YWJj\n", b"abc"),
|
||||
(b'YWJj\nYWI=', b'abcab'))
|
||||
funcs = (
|
||||
base64.b64decode,
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
:func:`base64.b64decode` with ``validate=True`` raises now a binascii.Error
|
||||
if the input ends with a single ``\n``.
|
Loading…
Reference in New Issue