Mercurial > cpython-lru_cache-weakref
diff Python/sysmodule.c @ 84785:dca92e8a011a 3.3
Issue #15905: Fix theoretical buffer overflow in handling of sys.argv[0],
prefix and exec_prefix if the operation system does not obey MAXPATHLEN.
| author | Christian Heimes <christian@cheimes.de> |
|---|---|
| date | Mon, 22 Jul 2013 12:53:32 +0200 |
| parents | ee01fd98b5b0 |
| children | 694e50a79638 01597384531f |
line wrap: on
line diff
--- a/Python/sysmodule.c Mon Jul 22 10:37:41 2013 +0200 +++ b/Python/sysmodule.c Mon Jul 22 12:53:32 2013 +0200 @@ -1856,10 +1856,11 @@ if (q == NULL) argv0 = link; /* argv0 without path */ else { - /* Must make a copy */ - wcscpy(argv0copy, argv0); + /* Must make a copy, argv0copy has room for 2 * MAXPATHLEN */ + wcsncpy(argv0copy, argv0, MAXPATHLEN); q = wcsrchr(argv0copy, SEP); - wcscpy(q+1, link); + wcsncpy(q+1, link, MAXPATHLEN); + q[MAXPATHLEN + 1] = L'\0'; argv0 = argv0copy; } }
