[Python-checkins] bpo-40645: Fix ref leaks in _hashopenssl (GH-26079)

pablogsal webhook-mailer at python.org
Wed May 12 14:20:46 EDT 2021


https://github.com/python/cpython/commit/504ffdae4e0cb7775f3e584c3b1d20c262fdfd7e
commit: 504ffdae4e0cb7775f3e584c3b1d20c262fdfd7e
branch: main
author: Erlend Egeberg Aasland <erlend.aasland at innova.no>
committer: pablogsal <Pablogsal at gmail.com>
date: 2021-05-12T19:20:41+01:00
summary:

bpo-40645: Fix ref leaks in _hashopenssl (GH-26079)

files:
M Modules/_hashopenssl.c

diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c
index 13634a579f0dd..e4a2885377567 100644
--- a/Modules/_hashopenssl.c
+++ b/Modules/_hashopenssl.c
@@ -2093,23 +2093,27 @@ hashlib_init_constructors(PyObject *module)
         }
         func  = PyObject_GetAttrString(module, fdef->ml_name);
         if (func == NULL) {
+            Py_DECREF(name_obj);
             return -1;
         }
-        if (PyDict_SetItem(state->constructs, func, name_obj) < 0) {
-            return -1;
-        }
+        int rc = PyDict_SetItem(state->constructs, func, name_obj);
         Py_DECREF(func);
         Py_DECREF(name_obj);
+        if (rc < 0) {
+            return -1;
+        }
     }
 
     proxy = PyDictProxy_New(state->constructs);
     if (proxy == NULL) {
         return -1;
     }
-    if (PyModule_AddObjectRef(module, "_constructors", proxy) < 0) {
+
+    int rc = PyModule_AddObjectRef(module, "_constructors", proxy);
+    Py_DECREF(proxy);
+    if (rc < 0) {
         return -1;
     }
-    Py_DECREF(proxy);
     return 0;
 }
 



More information about the Python-checkins mailing list