[Python-checkins] [3.12] gh-104614: Fix potential ref. leak in _testcapimodule/get_basic_static_type() (GH-105225) (#105248)

erlend-aasland webhook-mailer at python.org
Fri Jun 2 13:10:11 EDT 2023


https://github.com/python/cpython/commit/72d5dfaa8f475498644035839f5a6469db486407
commit: 72d5dfaa8f475498644035839f5a6469db486407
branch: 3.12
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: erlend-aasland <erlend.aasland at protonmail.com>
date: 2023-06-02T17:09:51Z
summary:

[3.12] gh-104614: Fix potential ref. leak in _testcapimodule/get_basic_static_type() (GH-105225) (#105248)

(cherry picked from commit e01b04c9075c6468ed57bc883693ec2a06a6dd8e)

Co-authored-by: Erlend E. Aasland <erlend.aasland at protonmail.com>

files:
M Modules/_testcapimodule.c

diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c
index 3caaca35cd74..b8ad00a01974 100644
--- a/Modules/_testcapimodule.c
+++ b/Modules/_testcapimodule.c
@@ -2658,13 +2658,15 @@ get_basic_static_type(PyObject *self, PyObject *args)
     PyTypeObject *cls = &BasicStaticTypes[num_basic_static_types_used++];
 
     if (base != NULL) {
-        cls->tp_base = (PyTypeObject *)Py_NewRef(base);
         cls->tp_bases = Py_BuildValue("(O)", base);
         if (cls->tp_bases == NULL) {
             return NULL;
         }
+        cls->tp_base = (PyTypeObject *)Py_NewRef(base);
     }
     if (PyType_Ready(cls) < 0) {
+        Py_DECREF(cls->tp_bases);
+        Py_DECREF(cls->tp_base);
         return NULL;
     }
     return (PyObject *)cls;



More information about the Python-checkins mailing list