From 0f6c8394cd079670897487bd9210d242ea3f17ca Mon Sep 17 00:00:00 2001 From: Alan Hamlett Date: Tue, 8 Mar 2022 17:43:30 -0800 Subject: [PATCH] Fix failing test by catching year overflow ValueError --- CHANGES.rst | 8 ++++++++ src/itsdangerous/__init__.py | 2 +- src/itsdangerous/timed.py | 10 ++++++++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/CHANGES.rst b/CHANGES.rst index 4dcfc6a..8098f8f 100644 --- a/CHANGES.rst +++ b/CHANGES.rst @@ -1,3 +1,11 @@ +Version 2.1.1 +------------- + +Unreleased + +- Handle date overflow in timed unsign. :pr:`296` + + Version 2.1.0 ------------- diff --git a/src/itsdangerous/__init__.py b/src/itsdangerous/__init__.py index 1225447..67057d8 100644 --- a/src/itsdangerous/__init__.py +++ b/src/itsdangerous/__init__.py @@ -16,4 +16,4 @@ from .url_safe import URLSafeSerializer as URLSafeSerializer from .url_safe import URLSafeTimedSerializer as URLSafeTimedSerializer -__version__ = "2.1.0" +__version__ = "2.1.1.dev0" diff --git a/src/itsdangerous/timed.py b/src/itsdangerous/timed.py index 5ea957f..9187a44 100644 --- a/src/itsdangerous/timed.py +++ b/src/itsdangerous/timed.py @@ -38,7 +38,8 @@ def get_timestamp(self) -> int: def timestamp_to_datetime(self, ts: int) -> datetime: """Convert the timestamp from :meth:`get_timestamp` into an - aware :class`datetime.datetime` in UTC. + aware :class`datetime.datetime` in UTC. Raises :exc:`.ValueError` + if the timestamp is too far in the past or future for Python. .. versionchanged:: 2.0 The timestamp is returned as a timezone-aware ``datetime`` @@ -124,7 +125,12 @@ def unsign( # split the value and the timestamp. if sig_error is not None: if ts_int is not None: - ts_dt = self.timestamp_to_datetime(ts_int) + try: + ts_dt = self.timestamp_to_datetime(ts_int) + except ValueError as exc: + raise BadTimeSignature( + "Malformed timestamp", payload=value + ) from exc raise BadTimeSignature(str(sig_error), payload=value, date_signed=ts_dt)