[CRT] Use MAX_PATH for buffer meant to contain an arbitrary path
authorSamuel Serapion <samuel.serapion@gmail.com>
Fri, 20 Oct 2017 15:03:07 +0000 (11:03 -0400)
committerThomas Faber <ThFabba@users.noreply.github.com>
Mon, 23 Oct 2017 12:44:38 +0000 (14:44 +0200)
The cFileName member of WIN32_FIND_DATA is an array of MAX_PATH(260). Using strcpy/wcscpy with the target buffer being smaller is potentially bad. Corresponds to CID 1401198 and 1401195.

sdk/lib/crt/misc/getargs.c

index df20bb2..1a8cf0f 100644 (file)
@@ -70,7 +70,7 @@ int wexpand(wchar_t* name, int expand_wildcards)
    WIN32_FIND_DATAW fd;
    HANDLE hFile;
    BOOLEAN first = TRUE;
-   wchar_t buffer[256];
+   wchar_t buffer[MAX_PATH];
    uintptr_t pos;
 
    if (expand_wildcards && (s = wcspbrk(name, L"*?")))
@@ -135,7 +135,7 @@ int aexpand(char* name, int expand_wildcards)
    WIN32_FIND_DATAA fd;
    HANDLE hFile;
    BOOLEAN first = TRUE;
-   char buffer[256];
+   char buffer[MAX_PATH];
    uintptr_t pos;
 
    if (expand_wildcards && (s = strpbrk(name, "*?")))