]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
bpo-40645: Fix reference leak in the _hashopenssl extension (GH-25063)
authorPablo Galindo <Pablogsal@gmail.com>
Mon, 29 Mar 2021 13:17:40 +0000 (14:17 +0100)
committerGitHub <noreply@github.com>
Mon, 29 Mar 2021 13:17:40 +0000 (06:17 -0700)
Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst [new file with mode: 0644]
Modules/_hashopenssl.c

diff --git a/Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst
new file mode 100644 (file)
index 0000000..9ca9843
--- /dev/null
@@ -0,0 +1,2 @@
+Fix reference leak in the :mod:`_hashopenssl` extension. Patch by Pablo
+Galindo.
index 6c83b9e4a41fa21e0321a03c5d79cf043f85efb9..ef927abf4859f4a58458ef448155570f387e85b0 100644 (file)
@@ -865,7 +865,7 @@ EVP_new_impl(PyObject *module, PyObject *name_obj, PyObject *data_obj,
 /*[clinic end generated code: output=ddd5053f92dffe90 input=c24554d0337be1b0]*/
 {
     Py_buffer view = { 0 };
-    PyObject *ret_obj;
+    PyObject *ret_obj = NULL;
     char *name;
     const EVP_MD *digest = NULL;
 
@@ -879,13 +879,14 @@ EVP_new_impl(PyObject *module, PyObject *name_obj, PyObject *data_obj,
 
     digest = py_digest_by_name(name);
     if (digest == NULL) {
-        return NULL;
+        goto exit;
     }
 
     ret_obj = EVPnew(module, digest,
                      (unsigned char*)view.buf, view.len,
                      usedforsecurity);
 
+exit:
     if (data_obj)
         PyBuffer_Release(&view);
     return ret_obj;