Mercurial > cpython-lru_cache-weakref
comparison 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 |
comparison
equal
deleted
inserted
replaced
| 84783:3cd6858c9f63 | 84785:dca92e8a011a |
|---|---|
| 1854 /* Must join(dirname(argv0), link) */ | 1854 /* Must join(dirname(argv0), link) */ |
| 1855 wchar_t *q = wcsrchr(argv0, SEP); | 1855 wchar_t *q = wcsrchr(argv0, SEP); |
| 1856 if (q == NULL) | 1856 if (q == NULL) |
| 1857 argv0 = link; /* argv0 without path */ | 1857 argv0 = link; /* argv0 without path */ |
| 1858 else { | 1858 else { |
| 1859 /* Must make a copy */ | 1859 /* Must make a copy, argv0copy has room for 2 * MAXPATHLEN */ |
| 1860 wcscpy(argv0copy, argv0); | 1860 wcsncpy(argv0copy, argv0, MAXPATHLEN); |
| 1861 q = wcsrchr(argv0copy, SEP); | 1861 q = wcsrchr(argv0copy, SEP); |
| 1862 wcscpy(q+1, link); | 1862 wcsncpy(q+1, link, MAXPATHLEN); |
| 1863 q[MAXPATHLEN + 1] = L'\0'; | |
| 1863 argv0 = argv0copy; | 1864 argv0 = argv0copy; |
| 1864 } | 1865 } |
| 1865 } | 1866 } |
| 1866 } | 1867 } |
| 1867 #endif /* HAVE_READLINK */ | 1868 #endif /* HAVE_READLINK */ |
