From: Pablo Galindo Date: Mon, 29 Mar 2021 13:17:40 +0000 (+0100) Subject: bpo-40645: Fix reference leak in the _hashopenssl extension (GH-25063) X-Git-Tag: v3.10.0a7~65 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=70cdf1812cf479c6b1cd7435a6fc0679ec1fb0da;p=thirdparty%2FPython%2Fcpython.git bpo-40645: Fix reference leak in the _hashopenssl extension (GH-25063) --- 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 index 000000000000..9ca984394754 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst @@ -0,0 +1,2 @@ +Fix reference leak in the :mod:`_hashopenssl` extension. Patch by Pablo +Galindo. diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c index 6c83b9e4a41f..ef927abf4859 100644 --- a/Modules/_hashopenssl.c +++ b/Modules/_hashopenssl.c @@ -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;