Jelajahi Sumber

Fixed bug 3338 - console_wmain doesn't null terminate the argv array

Simon Hug

The function console_wmain in src/main/windows/SDL_windows_main.c does not null terminate the argument list it is creating. As specified by the C standard, "argv[argc] shall be a null pointer."

The SDLTest framework makes use of that null pointer and some test programs can cause an access violation because it's missing.
Sam Lantinga 10 tahun lalu
induk
melakukan
708def87f3
1 mengubah file dengan 2 tambahan dan 1 penghapusan
  1. 2 1
      src/main/windows/SDL_windows_main.c

+ 2 - 1
src/main/windows/SDL_windows_main.c

@@ -141,12 +141,13 @@ int
 console_wmain(int argc, wchar_t *wargv[], wchar_t *wenvp)
 console_wmain(int argc, wchar_t *wargv[], wchar_t *wenvp)
 {
 {
     int retval = 0;
     int retval = 0;
-    char **argv = SDL_stack_alloc(char*, argc);
+    char **argv = SDL_stack_alloc(char*, argc + 1);
     int i;
     int i;
 
 
     for (i = 0; i < argc; ++i) {
     for (i = 0; i < argc; ++i) {
         argv[i] = WIN_StringToUTF8(wargv[i]);
         argv[i] = WIN_StringToUTF8(wargv[i]);
     }
     }
+    argv[argc] = NULL;
 
 
     retval = main_utf8(argc, argv);
     retval = main_utf8(argc, argv);