From 88d0663005d258526496d1f8ee0acb7103c69e80 Mon Sep 17 00:00:00 2001 From: "Miss Islington (bot)" <31488909+miss-islington@users.noreply.github.com> Date: Wed, 20 Sep 2017 23:47:12 -0700 Subject: [PATCH] [3.6] closes bpo-31532: Fix memory corruption due to allocator mix (GH-3679) (#3681) Fix a memory corruption in getpath.c due to mixed memory allocators between Py_GetPath() and Py_SetPath(). The fix use the Raw allocator to mimic the windows version. This patch should be used from python3.6 to the current version for more details, see the bug report and https://github.com/pyinstaller/pyinstaller/issues/2812 (cherry picked from commit 3d1e2ab584ed0175592b5be2a0bc98dc1723776a) --- Misc/NEWS.d/next/C API/2017-09-20-21-59-52.bpo-31532.s9Cw9_.rst | 2 ++ Modules/getpath.c | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 Misc/NEWS.d/next/C API/2017-09-20-21-59-52.bpo-31532.s9Cw9_.rst diff --git a/Misc/NEWS.d/next/C API/2017-09-20-21-59-52.bpo-31532.s9Cw9_.rst b/Misc/NEWS.d/next/C API/2017-09-20-21-59-52.bpo-31532.s9Cw9_.rst new file mode 100644 index 0000000000..7451986846 --- /dev/null +++ b/Misc/NEWS.d/next/C API/2017-09-20-21-59-52.bpo-31532.s9Cw9_.rst @@ -0,0 +1,2 @@ +Fix memory corruption due to allocator mix in getpath.c between Py_GetPath() +and Py_SetPath() diff --git a/Modules/getpath.c b/Modules/getpath.c index 0f916436c5..dd3387a9d7 100644 --- a/Modules/getpath.c +++ b/Modules/getpath.c @@ -735,7 +735,7 @@ calculate_path(void) bufsz += wcslen(zip_path) + 1; bufsz += wcslen(exec_prefix) + 1; - buf = PyMem_New(wchar_t, bufsz); + buf = PyMem_RawMalloc(bufsz * sizeof(wchar_t)); if (buf == NULL) { Py_FatalError( "Not enough memory for dynamic PYTHONPATH"); -- 2.40.0