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 */