Skip to content

Commit

Permalink
bpo-39055: Reject a trailing \n in base64.b64decode() with validate=T…
Browse files Browse the repository at this point in the history
…rue. (GH-17616)

(cherry picked from commit b19c0d7)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
  • Loading branch information
miss-islington and serhiy-storchaka committed Jan 5, 2020
1 parent e1caa49 commit 34aa3e7
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 1 deletion.
2 changes: 1 addition & 1 deletion Lib/base64.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand Down
1 change: 1 addition & 0 deletions Lib/test/test_base64.py
Original file line number Diff line number Diff line change
Expand Up @@ -250,6 +250,7 @@ def test_b64decode_invalid_chars(self):
(b'3d}==', b'\xdd'),
(b'@@', b''),
(b'!', b''),
(b"YWJj\n", b"abc"),
(b'YWJj\nYWI=', b'abcab'))
funcs = (
base64.b64decode,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
:func:`base64.b64decode` with ``validate=True`` raises now a binascii.Error
if the input ends with a single ``\n``.

0 comments on commit 34aa3e7

Please sign in to comment.