mirror of
https://github.com/python/cpython.git
synced 2025-12-04 08:34:25 +00:00
Issue #3813: cannot lanch python.exe via symbolic link on cygwin.
readlink(2) can return non-null-terminated string. Reviewed by Amaury Forgeot d'Arc.
This commit is contained in:
parent
29d95eb6f2
commit
f8247796b1
1 changed files with 1 additions and 2 deletions
|
|
@ -183,6 +183,7 @@ _Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t bufsiz)
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
cbuf[res] = '\0'; /* buf will be null terminated */
|
||||||
r1 = mbstowcs(buf, cbuf, bufsiz);
|
r1 = mbstowcs(buf, cbuf, bufsiz);
|
||||||
if (r1 == -1) {
|
if (r1 == -1) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
|
|
@ -559,8 +560,6 @@ calculate_path(void)
|
||||||
wchar_t tmpbuffer[MAXPATHLEN+1];
|
wchar_t tmpbuffer[MAXPATHLEN+1];
|
||||||
int linklen = _Py_wreadlink(progpath, tmpbuffer, MAXPATHLEN);
|
int linklen = _Py_wreadlink(progpath, tmpbuffer, MAXPATHLEN);
|
||||||
while (linklen != -1) {
|
while (linklen != -1) {
|
||||||
/* It's not null terminated! */
|
|
||||||
tmpbuffer[linklen] = '\0';
|
|
||||||
if (tmpbuffer[0] == SEP)
|
if (tmpbuffer[0] == SEP)
|
||||||
/* tmpbuffer should never be longer than MAXPATHLEN,
|
/* tmpbuffer should never be longer than MAXPATHLEN,
|
||||||
but extra check does not hurt */
|
but extra check does not hurt */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue