From 18a7f9f6afa6fe71a90d701f683f96f0bd7a53e0 Mon Sep 17 00:00:00 2001 From: Osyotr Date: Sat, 24 Aug 2024 01:13:13 +0300 Subject: [PATCH] Fix timezone sanity check for platforms with unsigned time_t --- Modules/timemodule.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 46f85bc9c30f9c..3d744acc65c763 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -1808,17 +1808,18 @@ init_timezone(PyObject *m) julyzone_t = -get_gmtoff(t, &p); julyname[9] = '\0'; + int janzone = (int)janzone_t; + int julyzone = (int)julyzone_t; + /* Sanity check, don't check for the validity of timezones. In practice, it should be more in range -12 hours .. +14 hours. */ #define MAX_TIMEZONE (48 * 3600) - if (janzone_t < -MAX_TIMEZONE || janzone_t > MAX_TIMEZONE - || julyzone_t < -MAX_TIMEZONE || julyzone_t > MAX_TIMEZONE) + if (janzone < -MAX_TIMEZONE || janzone > MAX_TIMEZONE + || julyzone < -MAX_TIMEZONE || julyzone > MAX_TIMEZONE) { PyErr_SetString(PyExc_RuntimeError, "invalid GMT offset"); return -1; } - int janzone = (int)janzone_t; - int julyzone = (int)julyzone_t; PyObject *tzname_obj; if (janzone < julyzone) {