mirror of https://github.com/python/cpython.git
bpo-39055: Reject a trailing \n in base64.b64decode() with validate=True. (GH-17616)
This commit is contained in:
parent
41ec17e45d
commit
b19c0d77e6
|
@ -82,7 +82,7 @@ def b64decode(s, altchars=None, validate=False):
|
||||||
altchars = _bytes_from_decode_data(altchars)
|
altchars = _bytes_from_decode_data(altchars)
|
||||||
assert len(altchars) == 2, repr(altchars)
|
assert len(altchars) == 2, repr(altchars)
|
||||||
s = s.translate(bytes.maketrans(altchars, b'+/'))
|
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')
|
raise binascii.Error('Non-base64 digit found')
|
||||||
return binascii.a2b_base64(s)
|
return binascii.a2b_base64(s)
|
||||||
|
|
||||||
|
|
|
@ -250,6 +250,7 @@ def test_b64decode_invalid_chars(self):
|
||||||
(b'3d}==', b'\xdd'),
|
(b'3d}==', b'\xdd'),
|
||||||
(b'@@', b''),
|
(b'@@', b''),
|
||||||
(b'!', b''),
|
(b'!', b''),
|
||||||
|
(b"YWJj\n", b"abc"),
|
||||||
(b'YWJj\nYWI=', b'abcab'))
|
(b'YWJj\nYWI=', b'abcab'))
|
||||||
funcs = (
|
funcs = (
|
||||||
base64.b64decode,
|
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