diff --git a/CHANGES.rst b/CHANGES.rst index 17c1a19..070ce38 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -5,6 +5,8 @@ Unreleased - Drop support for Python 3.8 and 3.9. - Remove previously deprecated code. +- Fix raising ``BadData`` on payload without padding on Python 3.15. + :issue:`420` Version 2.2.0 diff --git a/src/itsdangerous/encoding.py b/src/itsdangerous/encoding.py index f5ca80f..1136d3e 100644 --- a/src/itsdangerous/encoding.py +++ b/src/itsdangerous/encoding.py @@ -3,6 +3,7 @@ import base64 import string import struct +import sys import typing as t from .exc import BadData @@ -33,7 +34,10 @@ def base64_decode(string: str | bytes) -> bytes: string += b"=" * (-len(string) % 4) try: - return base64.urlsafe_b64decode(string) + if sys.version_info >= (3, 15): + return base64.urlsafe_b64decode(string, padded=True) + else: + return base64.urlsafe_b64decode(string) except (TypeError, ValueError) as e: raise BadData("Invalid base64-encoded data") from e