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.
This commit is contained in:
parent
6f79838fc1
commit
81328f3070
|
@ -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)
|
|
@ -686,6 +686,7 @@ _PyPathConfig_ComputeSysPath0(const PyWideStringList *argv, PyObject **path0_p)
|
||||||
#ifdef HAVE_READLINK
|
#ifdef HAVE_READLINK
|
||||||
wchar_t link[MAXPATHLEN + 1];
|
wchar_t link[MAXPATHLEN + 1];
|
||||||
int nr = 0;
|
int nr = 0;
|
||||||
|
wchar_t path0copy[2 * MAXPATHLEN + 1];
|
||||||
|
|
||||||
if (have_script_arg) {
|
if (have_script_arg) {
|
||||||
nr = _Py_wreadlink(path0, link, Py_ARRAY_LENGTH(link));
|
nr = _Py_wreadlink(path0, link, Py_ARRAY_LENGTH(link));
|
||||||
|
@ -708,7 +709,6 @@ _PyPathConfig_ComputeSysPath0(const PyWideStringList *argv, PyObject **path0_p)
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
/* Must make a copy, path0copy has room for 2 * MAXPATHLEN */
|
/* Must make a copy, path0copy has room for 2 * MAXPATHLEN */
|
||||||
wchar_t path0copy[2 * MAXPATHLEN + 1];
|
|
||||||
wcsncpy(path0copy, path0, MAXPATHLEN);
|
wcsncpy(path0copy, path0, MAXPATHLEN);
|
||||||
q = wcsrchr(path0copy, SEP);
|
q = wcsrchr(path0copy, SEP);
|
||||||
wcsncpy(q+1, link, MAXPATHLEN);
|
wcsncpy(q+1, link, MAXPATHLEN);
|
||||||
|
|
Loading…
Reference in New Issue