]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-101819: Harden _io init (#104352)
authorErlend E. Aasland <erlend.aasland@protonmail.com>
Wed, 10 May 2023 10:59:03 +0000 (12:59 +0200)
committerGitHub <noreply@github.com>
Wed, 10 May 2023 10:59:03 +0000 (12:59 +0200)
Fix potential refleak if PyModule_AddObject() fails.

Modules/_io/_iomodule.c

index c05407b5d61815f4bd77ba86e3b471ee5df8dca5..6c5ea287964294c645c0e97e03266bf8c00c0163 100644 (file)
@@ -730,9 +730,11 @@ PyInit__io(void)
         "UnsupportedOperation", PyExc_OSError, PyExc_ValueError);
     if (state->unsupported_operation == NULL)
         goto fail;
-    if (PyModule_AddObject(m, "UnsupportedOperation",
-                           Py_NewRef(state->unsupported_operation)) < 0)
+    if (PyModule_AddObjectRef(m, "UnsupportedOperation",
+                              state->unsupported_operation) < 0)
+    {
         goto fail;
+    }
 
     /* BlockingIOError, for compatibility */
     if (PyModule_AddObjectRef(m, "BlockingIOError",
@@ -785,7 +787,6 @@ PyInit__io(void)
     return m;
 
   fail:
-    Py_XDECREF(state->unsupported_operation);
     Py_DECREF(m);
     return NULL;
 }