]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-42425: Fix possible leak in initialization of errmap for OSError (GH-23446)
authorSerhiy Storchaka <storchaka@gmail.com>
Sat, 21 Nov 2020 17:17:46 +0000 (19:17 +0200)
committerGitHub <noreply@github.com>
Sat, 21 Nov 2020 17:17:46 +0000 (19:17 +0200)
Objects/exceptions.c

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