From 0c8c442b593ff0c71a4ccee3ca2275c5f66c3fa9 Mon Sep 17 00:00:00 2001 From: krylosov-aa Date: Thu, 5 Mar 2026 06:48:25 +0300 Subject: [PATCH] [3.13] gh-145301: Fix double-free in hashlib and hmac module initialization (GH-145321) (cherry picked from commit 6acaf659ef0fdee131bc02f0b58685da039b5855) Co-authored-by: krylosov-aa gh-145301: Fix double-free in hashlib and hmac initialization --- .../next/Library/2026-02-27-19-00-26.gh-issue-145301.2Wih4b.rst | 2 ++ Modules/_hashopenssl.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/Library/2026-02-27-19-00-26.gh-issue-145301.2Wih4b.rst diff --git a/Misc/NEWS.d/next/Library/2026-02-27-19-00-26.gh-issue-145301.2Wih4b.rst b/Misc/NEWS.d/next/Library/2026-02-27-19-00-26.gh-issue-145301.2Wih4b.rst new file mode 100644 index 00000000000000..7aeb6a1145ab4c --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-02-27-19-00-26.gh-issue-145301.2Wih4b.rst @@ -0,0 +1,2 @@ +:mod:`hashlib`: fix a crash when the initialization of the underlying C +extension module fails. diff --git a/Modules/_hashopenssl.c b/Modules/_hashopenssl.c index 5e4783395f4f48..bf3894e4ffbea9 100644 --- a/Modules/_hashopenssl.c +++ b/Modules/_hashopenssl.c @@ -239,7 +239,7 @@ py_hashentry_table_new(void) { if (h->py_alias != NULL) { if (_Py_hashtable_set(ht, (const void*)entry->py_alias, (void*)entry) < 0) { - PyMem_Free(entry); + /* entry is already in ht, will be freed by _Py_hashtable_destroy() */ goto error; } entry->refcnt++;