]> granicus.if.org Git - python/commitdiff
posix_getcwd(): limit to INT_MAX on Windows
authorVictor Stinner <victor.stinner@gmail.com>
Mon, 14 Mar 2016 17:07:53 +0000 (18:07 +0100)
committerVictor Stinner <victor.stinner@gmail.com>
Mon, 14 Mar 2016 17:07:53 +0000 (18:07 +0100)
It's more to fix a conversion warning during compilation, I don't think that
Windows support current working directory larger than 2 GB ...

Modules/posixmodule.c

index 6e0081d0dff0e934fe0aed3a76a39990b9f745d2..7e8987845bb624206605f54c10defe0b272a4d48 100644 (file)
@@ -3320,12 +3320,22 @@ posix_getcwd(int use_bytes)
     Py_BEGIN_ALLOW_THREADS
     do {
         buflen += chunk;
+#ifdef MS_WINDOWS
+        if (buflen > INT_MAX) {
+            PyErr_NoMemory();
+            break;
+        }
+#endif
         tmpbuf = PyMem_RawRealloc(buf, buflen);
         if (tmpbuf == NULL)
             break;
 
         buf = tmpbuf;
+#ifdef MS_WINDOWS
+        cwd = getcwd(buf, (int)buflen);
+#else
         cwd = getcwd(buf, buflen);
+#endif
     } while (cwd == NULL && errno == ERANGE);
     Py_END_ALLOW_THREADS