summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornurelin <nurelin@nurelin.eu>2017-09-21 06:08:20 (GMT)
committerBenjamin Peterson <benjamin@python.org>2017-09-21 06:08:20 (GMT)
commit3d1e2ab584ed0175592b5be2a0bc98dc1723776a (patch)
tree7f52f499c7ca56dab06b599b22a546c1f78d9b0c
parentb091bec824137f286b22084be5f8d397d21b9abb (diff)
downloadcpython-3d1e2ab584ed0175592b5be2a0bc98dc1723776a.zip
cpython-3d1e2ab584ed0175592b5be2a0bc98dc1723776a.tar.gz
cpython-3d1e2ab584ed0175592b5be2a0bc98dc1723776a.tar.bz2
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
-rw-r--r--Misc/NEWS.d/next/C API/2017-09-20-21-59-52.bpo-31532.s9Cw9_.rst2
-rw-r--r--Modules/getpath.c2
2 files changed, 3 insertions, 1 deletions
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 0000000..7451986
--- /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 0f91643..dd3387a 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");