]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-148850: Fix memory sanitizer false positive in os.getrandom (GH-148851)
authorpetervanvugt <65050545+petervanvugt@users.noreply.github.com>
Fri, 1 May 2026 15:37:36 +0000 (08:37 -0700)
committerGitHub <noreply@github.com>
Fri, 1 May 2026 15:37:36 +0000 (17:37 +0200)
Co-authored-by: Petr Viktorin <encukou@gmail.com>
Include/pyport.h
Misc/NEWS.d/next/Core_and_Builtins/2026-04-21-19-29-29.gh-issue-148850.MSH0J_.rst [new file with mode: 0644]
Modules/posixmodule.c

index c975921beafb9e0e87c242be678f0e704bdcd3f6..73a3e6cdaf09200c35fdaa01a2d02c2c57060d64 100644 (file)
@@ -553,6 +553,7 @@ extern "C" {
 #    if !defined(_Py_MEMORY_SANITIZER)
 #      define _Py_MEMORY_SANITIZER
 #      define _Py_NO_SANITIZE_MEMORY __attribute__((no_sanitize_memory))
+#      define _Py_MSAN_UNPOISON(PTR, SIZE)  (__msan_unpoison(PTR, SIZE))
 #    endif
 #  endif
 #  if __has_feature(address_sanitizer)
@@ -591,6 +592,9 @@ extern "C" {
 #ifndef _Py_NO_SANITIZE_MEMORY
 #  define _Py_NO_SANITIZE_MEMORY
 #endif
+#ifndef _Py_MSAN_UNPOISON
+#  define _Py_MSAN_UNPOISON(PTR, SIZE)
+#endif
 
 /* AIX has __bool__ redefined in it's system header file. */
 #if defined(_AIX) && defined(__bool__)
diff --git a/Misc/NEWS.d/next/Core_and_Builtins/2026-04-21-19-29-29.gh-issue-148850.MSH0J_.rst b/Misc/NEWS.d/next/Core_and_Builtins/2026-04-21-19-29-29.gh-issue-148850.MSH0J_.rst
new file mode 100644 (file)
index 0000000..324d161
--- /dev/null
@@ -0,0 +1 @@
+Fix the memory sanitizer false positive in :func:`os.getrandom`.
index e5ce487723b25bec7ccc460bdf608e48319c2492..3bdbf2ef81679e6151975433c300dd672c331fbc 100644 (file)
@@ -17195,6 +17195,8 @@ os_getrandom_impl(PyObject *module, Py_ssize_t size, int flags)
         goto error;
     }
 
+    _Py_MSAN_UNPOISON(data, size);
+
     return PyBytesWriter_FinishWithSize(writer, n);
 
 error: