diff --git a/Misc/NEWS.d/next/Library/2026-03-06-20-17-45.gh-issue-145376.0F7HFq.rst b/Misc/NEWS.d/next/Library/2026-03-06-20-17-45.gh-issue-145376.0F7HFq.rst new file mode 100644 index 00000000000000..aeba8c01fcf603 --- /dev/null +++ b/Misc/NEWS.d/next/Library/2026-03-06-20-17-45.gh-issue-145376.0F7HFq.rst @@ -0,0 +1 @@ +Fix null pointer dereference in unusual error scenario in :mod:`hashlib`. diff --git a/Modules/md5module.c b/Modules/md5module.c index 7d41f0a3a5145d..c56fa5fc13e32e 100644 --- a/Modules/md5module.c +++ b/Modules/md5module.c @@ -84,7 +84,10 @@ MD5_traverse(PyObject *ptr, visitproc visit, void *arg) static void MD5_dealloc(MD5object *ptr) { - Hacl_Hash_MD5_free(ptr->hash_state); + if (ptr->hash_state != NULL) { + Hacl_Hash_MD5_free(ptr->hash_state); + ptr->hash_state = NULL; + } PyTypeObject *tp = Py_TYPE((PyObject*)ptr); PyObject_GC_UnTrack(ptr); PyObject_GC_Del(ptr);