diff options
author | Gregory P. Smith <greg@krypto.org> | 2020-06-22 07:27:20 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-22 07:27:20 (GMT) |
commit | 81328f30703bd7225e7e73aedb0994a7293ce190 (patch) | |
tree | 3e717474bd4c700ba2c6880add371198fce1ffbd | |
parent | 6f79838fc1cbc8a92df35f44f2fb327d61f70ea9 (diff) | |
download | cpython-81328f30703bd7225e7e73aedb0994a7293ce190.zip cpython-81328f30703bd7225e7e73aedb0994a7293ce190.tar.gz cpython-81328f30703bd7225e7e73aedb0994a7293ce190.tar.bz2 |
bpo-41056: Fix reference to deallocated stack in pathconfig (Coverity) (GH-21013)
Reported by Coverity. (CID 1457554 RETURN_LOCAL)
path0 is assigned as a pointer to this right before it goes out of scope.
-rw-r--r-- | Misc/NEWS.d/next/Core and Builtins/2020-06-21-19-53-33.bpo-41056.IDu_EK.rst | 1 | ||||
-rw-r--r-- | Python/pathconfig.c | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/Misc/NEWS.d/next/Core and Builtins/2020-06-21-19-53-33.bpo-41056.IDu_EK.rst b/Misc/NEWS.d/next/Core and Builtins/2020-06-21-19-53-33.bpo-41056.IDu_EK.rst new file mode 100644 index 0000000..25f93c9 --- /dev/null +++ b/Misc/NEWS.d/next/Core and Builtins/2020-06-21-19-53-33.bpo-41056.IDu_EK.rst @@ -0,0 +1 @@ +Fixes a reference to deallocated stack space during startup when constructing sys.path involving a relative symlink when code was supplied via -c. (discovered via Coverity)
\ No newline at end of file diff --git a/Python/pathconfig.c b/Python/pathconfig.c index fe3ac3e..5c38041 100644 --- a/Python/pathconfig.c +++ b/Python/pathconfig.c @@ -686,6 +686,7 @@ _PyPathConfig_ComputeSysPath0(const PyWideStringList *argv, PyObject **path0_p) #ifdef HAVE_READLINK wchar_t link[MAXPATHLEN + 1]; int nr = 0; + wchar_t path0copy[2 * MAXPATHLEN + 1]; if (have_script_arg) { nr = _Py_wreadlink(path0, link, Py_ARRAY_LENGTH(link)); @@ -708,7 +709,6 @@ _PyPathConfig_ComputeSysPath0(const PyWideStringList *argv, PyObject **path0_p) } else { /* Must make a copy, path0copy has room for 2 * MAXPATHLEN */ - wchar_t path0copy[2 * MAXPATHLEN + 1]; wcsncpy(path0copy, path0, MAXPATHLEN); q = wcsrchr(path0copy, SEP); wcsncpy(q+1, link, MAXPATHLEN); |