https://github.com/python/cpython/commit/0eaf260d79f8547b02d8e80d760b11e821928fde
commit: 0eaf260d79f8547b02d8e80d760b11e821928fde
branch: main
author: Pieter Eendebak <[email protected]>
committer: encukou <[email protected]>
date: 2026-03-05T10:21:49Z
summary:
gh-145376: Fix refleak and null pointer deref in unusual error path of datetime
module (GH-145476)
files:
M Modules/_datetimemodule.c
diff --git a/Modules/_datetimemodule.c b/Modules/_datetimemodule.c
index 8f64e572bd6086..6b23a5c637a308 100644
--- a/Modules/_datetimemodule.c
+++ b/Modules/_datetimemodule.c
@@ -3822,9 +3822,26 @@ iso_calendar_date_new_impl(PyTypeObject *type, int year,
int week,
return NULL;
}
- PyTuple_SET_ITEM(self, 0, PyLong_FromLong(year));
- PyTuple_SET_ITEM(self, 1, PyLong_FromLong(week));
- PyTuple_SET_ITEM(self, 2, PyLong_FromLong(weekday));
+ PyObject *year_object = PyLong_FromLong(year);
+ if (year_object == NULL) {
+ Py_DECREF(self);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(self, 0, year_object);
+
+ PyObject *week_object = PyLong_FromLong(week);
+ if (week_object == NULL) {
+ Py_DECREF(self);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(self, 1, week_object);
+
+ PyObject *weekday_object = PyLong_FromLong(weekday);
+ if (weekday_object == NULL) {
+ Py_DECREF(self);
+ return NULL;
+ }
+ PyTuple_SET_ITEM(self, 2, weekday_object);
return (PyObject *)self;
}
@@ -6891,9 +6908,9 @@ datetime_datetime_astimezone_impl(PyDateTime_DateTime
*self,
goto naive;
}
else if (!PyDelta_Check(offset)) {
+ PyErr_Format(PyExc_TypeError, "utcoffset() returned %T,"
+ " expected timedelta or None", offset);
Py_DECREF(offset);
- PyErr_Format(PyExc_TypeError, "utcoffset() returned %.200s,"
- " expected timedelta or None", Py_TYPE(offset)->tp_name);
return NULL;
}
/* result = self - offset */
_______________________________________________
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]