From: nurelin Date: Thu, 21 Sep 2017 06:08:20 +0000 (+0200) Subject: bpo-31532: Fix memory corruption due to allocator mix (#3679) X-Git-Tag: v3.7.0a2~144 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3d1e2ab584ed0175592b5be2a0bc98dc1723776a;p=thirdparty%2FPython%2Fcpython.git bpo-31532: Fix memory corruption due to allocator mix (#3679) 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 --- 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 000000000000..7451986846e1 --- /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 0f916436c515..dd3387a9d77f 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");