gh-86179: Avoid making case-only changes when calculating realpath() during initialization (GH-113077)
This commit is contained in:
@@ -506,12 +506,17 @@ done:
|
|||||||
HANDLE hFile;
|
HANDLE hFile;
|
||||||
wchar_t resolved[MAXPATHLEN+1];
|
wchar_t resolved[MAXPATHLEN+1];
|
||||||
int len = 0, err;
|
int len = 0, err;
|
||||||
|
Py_ssize_t pathlen;
|
||||||
PyObject *result;
|
PyObject *result;
|
||||||
|
|
||||||
wchar_t *path = PyUnicode_AsWideCharString(pathobj, NULL);
|
wchar_t *path = PyUnicode_AsWideCharString(pathobj, &pathlen);
|
||||||
if (!path) {
|
if (!path) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
if (wcslen(path) != pathlen) {
|
||||||
|
PyErr_SetString(PyExc_ValueError, "path contains embedded nulls");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Py_BEGIN_ALLOW_THREADS
|
Py_BEGIN_ALLOW_THREADS
|
||||||
hFile = CreateFileW(path, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
hFile = CreateFileW(path, 0, 0, NULL, OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
|
||||||
@@ -535,7 +540,11 @@ done:
|
|||||||
len -= 4;
|
len -= 4;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
result = PyUnicode_FromWideChar(p, len);
|
if (CompareStringOrdinal(path, (int)pathlen, p, len, TRUE) == CSTR_EQUAL) {
|
||||||
|
result = Py_NewRef(pathobj);
|
||||||
|
} else {
|
||||||
|
result = PyUnicode_FromWideChar(p, len);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
result = Py_NewRef(pathobj);
|
result = Py_NewRef(pathobj);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user