diff options
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2021-03-29-11-55-06.bpo-40645.PhaT-B.rst | 2 | ||||
-rw-r--r-- | Modules/_hashopenssl.c | 5 |
2 files changed, 5 insertions, 2 deletions
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; |