From: Paul Ganssle Date: Wed, 24 Jun 2020 15:58:50 +0000 (-0400) Subject: [3.9] bpo-41056: Fix a possible MemoryError leak within zoneinfo. (GH-21007) X-Git-Tag: v3.9.0b4~43 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6c56356109616ea1292aafa48d30536279ec0937;p=thirdparty%2FPython%2Fcpython.git [3.9] bpo-41056: Fix a possible MemoryError leak within zoneinfo. (GH-21007) This was detected by our Coverity scan as a REVERSE_INULL issue. Automerge-Triggered-By: @gpshead (cherry picked from commit d780fa7) Co-authored-by: Gregory P. Smith --- diff --git a/Misc/NEWS.d/next/Library/2020-06-20-18-33-03.bpo-41056.gTH4Bq.rst b/Misc/NEWS.d/next/Library/2020-06-20-18-33-03.bpo-41056.gTH4Bq.rst new file mode 100644 index 000000000000..0439d82a50ad --- /dev/null +++ b/Misc/NEWS.d/next/Library/2020-06-20-18-33-03.bpo-41056.gTH4Bq.rst @@ -0,0 +1 @@ +Fixed an instance where a MemoryError within the zoneinfo module might not be reported or not reported at its source. (found by Coverity) \ No newline at end of file diff --git a/Modules/_zoneinfo.c b/Modules/_zoneinfo.c index e8b28319993a..a2883495fe7f 100644 --- a/Modules/_zoneinfo.c +++ b/Modules/_zoneinfo.c @@ -278,13 +278,11 @@ zoneinfo_new(PyTypeObject *type, PyObject *args, PyObject *kw) instance = PyObject_CallMethod(weak_cache, "setdefault", "OO", key, tmp); - ((PyZoneInfo_ZoneInfo *)instance)->source = SOURCE_CACHE; - Py_DECREF(tmp); - if (instance == NULL) { return NULL; } + ((PyZoneInfo_ZoneInfo *)instance)->source = SOURCE_CACHE; } update_strong_cache(type, key, instance); @@ -1622,7 +1620,7 @@ parse_abbr(const char *const p, PyObject **abbr) } *abbr = PyUnicode_FromStringAndSize(str_start, str_end - str_start); - if (abbr == NULL) { + if (*abbr == NULL) { return -1; }