From: Erlend E. Aasland Date: Wed, 10 May 2023 10:59:03 +0000 (+0200) Subject: gh-101819: Harden _io init (#104352) X-Git-Tag: v3.12.0b1~184 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=68a8ca6dc10bdceb4efaac569081b78ec01c3a99;p=thirdparty%2FPython%2Fcpython.git gh-101819: Harden _io init (#104352) Fix potential refleak if PyModule_AddObject() fails. --- diff --git a/Modules/_io/_iomodule.c b/Modules/_io/_iomodule.c index c05407b5d618..6c5ea2879642 100644 --- a/Modules/_io/_iomodule.c +++ b/Modules/_io/_iomodule.c @@ -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; }