]> granicus.if.org Git - python/commitdiff
Issue #3813: cannot lanch python.exe via symbolic link on cygwin.
authorHirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
Tue, 9 Sep 2008 13:56:11 +0000 (13:56 +0000)
committerHirokazu Yamamoto <ocean-city@m2.ccsnet.ne.jp>
Tue, 9 Sep 2008 13:56:11 +0000 (13:56 +0000)
readlink(2) can return non-null-terminated string.
Reviewed by Amaury Forgeot d'Arc.

Modules/getpath.c

index f752a7ff97c72e6a92241474479739fe21a2b5c5..064877c0fcc24279fbc778653cd10860aa94348b 100644 (file)
@@ -183,6 +183,7 @@ _Py_wreadlink(const wchar_t *path, wchar_t *buf, size_t bufsiz)
        errno = EINVAL;
        return -1;
     }
+    cbuf[res] = '\0'; /* buf will be null terminated */
     r1 = mbstowcs(buf, cbuf, bufsiz);
     if (r1 == -1) {
        errno = EINVAL;
@@ -559,8 +560,6 @@ calculate_path(void)
         wchar_t tmpbuffer[MAXPATHLEN+1];
         int linklen = _Py_wreadlink(progpath, tmpbuffer, MAXPATHLEN);
         while (linklen != -1) {
-            /* It's not null terminated! */
-            tmpbuffer[linklen] = '\0';
             if (tmpbuffer[0] == SEP)
                 /* tmpbuffer should never be longer than MAXPATHLEN,
                    but extra check does not hurt */