Browse Source

Fix null-pointer dereference on failing SDL_SYS_CreateProcess

Anonymous Maarten 7 months ago
parent
commit
f6055432c8
1 changed files with 10 additions and 2 deletions
  1. 10 2
      src/process/windows/SDL_windowsprocess.c

+ 10 - 2
src/process/windows/SDL_windowsprocess.c

@@ -259,6 +259,8 @@ bool SDL_SYS_CreateProcessWithProperties(SDL_Process *process, SDL_PropertiesID
         return false;
     }
     process->internal = data;
+    data->process_information.hProcess = INVALID_HANDLE_VALUE;
+    data->process_information.hThread = INVALID_HANDLE_VALUE;
 
     creation_flags = CREATE_UNICODE_ENVIRONMENT;
 
@@ -533,8 +535,14 @@ void SDL_SYS_DestroyProcess(SDL_Process *process)
     if (io) {
         SDL_CloseIO(io);
     }
-    CloseHandle(data->process_information.hThread);
-    CloseHandle(data->process_information.hProcess);
+    if (data) {
+        if (data->process_information.hThread != INVALID_HANDLE_VALUE) {
+            CloseHandle(data->process_information.hThread);
+        }
+        if (data->process_information.hProcess != INVALID_HANDLE_VALUE) {
+            CloseHandle(data->process_information.hProcess);
+        }
+    }
     SDL_free(data);
 }