https://github.com/python/cpython/commit/ec1dd99800be83999bcc10f4453cae32bc70a38a commit: ec1dd99800be83999bcc10f4453cae32bc70a38a branch: 3.15 author: Miss Islington (bot) <[email protected]> committer: serhiy-storchaka <[email protected]> date: 2026-10-10T13:32:03+03:00 summary:
[3.15] Fix a dangling pointer and reference leak in `local_timezone_from_timestamp` (GH-156598) (GH-156643) Fix a dangling pointer and reference leak in `local_timezone_from_timestamp` (GH-156598) (cherry picked from commit fcf0a987006e1aa44cc36183f44679d3f3d64f7e) Co-authored-by: Stan Ulbrych <[email protected]> files: M Modules/_datetimemodule.c diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c index d218c989891c1b..d0f2e8c7dcabe4 100644 --- a/Modules/_datetimemodule.c +++ b/Modules/_datetimemodule.c @@ -6767,6 +6767,9 @@ local_timezone_from_timestamp(time_t timestamp) struct tm local_time_tm; PyObject *nameo = NULL; const char *zone = NULL; +#ifndef HAVE_STRUCT_TM_TM_ZONE + char buf[100]; // for zone, which is used after the block below +#endif if (_PyTime_localtime(timestamp, &local_time_tm) != 0) return NULL; @@ -6777,9 +6780,9 @@ local_timezone_from_timestamp(time_t timestamp) { PyObject *local_time, *utc_time; struct tm utc_time_tm; - char buf[100]; - strftime(buf, sizeof(buf), "%Z", &local_time_tm); - zone = buf; + if (strftime(buf, sizeof(buf), "%Z", &local_time_tm) != 0) { + zone = buf; + } local_time = new_datetime(local_time_tm.tm_year + 1900, local_time_tm.tm_mon + 1, local_time_tm.tm_mday, @@ -6789,8 +6792,10 @@ local_timezone_from_timestamp(time_t timestamp) if (local_time == NULL) { return NULL; } - if (_PyTime_gmtime(timestamp, &utc_time_tm) != 0) + if (_PyTime_gmtime(timestamp, &utc_time_tm) != 0) { + Py_DECREF(local_time); return NULL; + } utc_time = new_datetime(utc_time_tm.tm_year + 1900, utc_time_tm.tm_mon + 1, utc_time_tm.tm_mday, _______________________________________________ Python-checkins mailing list -- [email protected] To unsubscribe send an email to [email protected] https://mail.python.org/mailman3//lists/python-checkins.python.org Member address: [email protected]
