From 70cdf1812cf479c6b1cd7435a6fc0679ec1fb0da Mon Sep 17 00:00:00 2001 From: Pablo Galindo Date: Mon, 29 Mar 2021 14:17:40 +0100 Subject: bpo-40645: Fix reference leak in the _hashopenssl extension (GH-25063) --- .../next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst | 2 ++ Modules/_hashopenssl.c | 5 +++-- 2 files changed, 5 insertions(+), 2 deletions(-) create mode 100644 Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst 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 0000000..9ca9843 --- /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 6c83b9e..ef927ab 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; -- cgit v0.12