mirror of
https://github.com/python/cpython.git
synced 2025-08-04 17:08:35 +00:00
bpo-44690: Adopt binacii.a2b_base64's strict mode in base64.b64decode (GH-27272)
* Use binascii.a2b_base64 to validate b64decode input. This change leads to exception messages changes (mostly). * Added more information to docstring of b64decode * Added a reference to binascii.a2b_base64 in the docs
This commit is contained in:
parent
e41912c634
commit
fa6304a522
3 changed files with 7 additions and 3 deletions
|
@ -78,6 +78,8 @@ The modern interface provides:
|
|||
these non-alphabet characters in the input result in a
|
||||
:exc:`binascii.Error`.
|
||||
|
||||
For more information about the strict base64 check, see :func:`binascii.a2b_base64`
|
||||
|
||||
|
||||
.. function:: standard_b64encode(s)
|
||||
|
||||
|
|
|
@ -76,15 +76,16 @@ def b64decode(s, altchars=None, validate=False):
|
|||
normal base-64 alphabet nor the alternative alphabet are discarded prior
|
||||
to the padding check. If validate is True, these non-alphabet characters
|
||||
in the input result in a binascii.Error.
|
||||
For more information about the strict base64 check, see:
|
||||
|
||||
https://docs.python.org/3.11/library/binascii.html#binascii.a2b_base64
|
||||
"""
|
||||
s = _bytes_from_decode_data(s)
|
||||
if altchars is not None:
|
||||
altchars = _bytes_from_decode_data(altchars)
|
||||
assert len(altchars) == 2, repr(altchars)
|
||||
s = s.translate(bytes.maketrans(altchars, b'+/'))
|
||||
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)
|
||||
return binascii.a2b_base64(s, strict_mode=validate)
|
||||
|
||||
|
||||
def standard_b64encode(s):
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
Adopt *binacii.a2b_base64*'s strict mode in *base64.b64decode*.
|
Loading…
Add table
Add a link
Reference in a new issue