]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.9] bpo-42425: Fix possible leak in initialization of errmap for OSError (GH-23446...
authorSerhiy Storchaka <storchaka@gmail.com>
Sat, 2 Jan 2021 10:24:27 +0000 (12:24 +0200)
committerGitHub <noreply@github.com>
Sat, 2 Jan 2021 10:24:27 +0000 (12:24 +0200)
(cherry picked from commit ed1007c0d74e658d1e6c9b51b12ce7501eb8cbf9)

Objects/exceptions.c

index e44ce727aff1e2e787586b8a71ef1de9b1cfff0e..eb72de53e98c12bea83f5f4c7924aa5d0ed46ac2 100644 (file)
@@ -2531,8 +2531,10 @@ _PyExc_Init(void)
     do { \
         PyObject *_code = PyLong_FromLong(CODE); \
         assert(_PyObject_RealIsSubclass(PyExc_ ## TYPE, PyExc_OSError)); \
-        if (!_code || PyDict_SetItem(errnomap, _code, PyExc_ ## TYPE)) \
+        if (!_code || PyDict_SetItem(errnomap, _code, PyExc_ ## TYPE)) { \
+            Py_XDECREF(_code); \
             return _PyStatus_ERR("errmap insertion problem."); \
+        } \
         Py_DECREF(_code); \
     } while (0)