]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
On Windows, terminate processes by handle, not pid
authorNick Mathewson <nickm@torproject.org>
Thu, 10 Apr 2014 15:16:42 +0000 (11:16 -0400)
committerNick Mathewson <nickm@torproject.org>
Sat, 14 Jun 2014 15:40:27 +0000 (11:40 -0400)
When we create a process yourself with CreateProcess, we get a
handle to the process in the PROCESS_INFO output structure.  But
instead of using that handle, we were manually looking up a _new_
handle based on the process ID, which is a poor idea, since the
process ID might refer to a new process later on, but the handle
can't.

src/common/util.c

index 0a1410139679748829ce3a56b39e869acfc2f53d..f79e72beac33db324c3e68fa2f22dec9df3d7d95 100644 (file)
@@ -3629,13 +3629,7 @@ tor_terminate_process(process_handle_t *process_handle)
 {
 #ifdef _WIN32
   if (tor_get_exit_code(process_handle, 0, NULL) == PROCESS_EXIT_RUNNING) {
-    HANDLE handle;
-    /* If the signal is outside of what GenerateConsoleCtrlEvent can use,
-       attempt to open and terminate the process. */
-    handle = OpenProcess(PROCESS_ALL_ACCESS, FALSE,
-                         process_handle->pid.dwProcessId);
-    if (!handle)
-      return -1;
+    HANDLE handle = process_handle->pid.hProcess;
 
     if (!TerminateProcess(handle, 0))
       return -1;