[tor-commits] [tor/master] On Windows, terminate processes by handle, not pid

nickm at torproject.org nickm at torproject.org
Sat Jun 14 15:47:50 UTC 2014


commit 34f8723dc784142b30d92bbbdeb37089ae7a3bc5
Author: Nick Mathewson <nickm at torproject.org>
Date:   Thu Apr 10 11:16:42 2014 -0400

    On Windows, terminate processes by handle, not pid
    
    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 |    8 +-------
 1 file changed, 1 insertion(+), 7 deletions(-)

diff --git a/src/common/util.c b/src/common/util.c
index 0a14101..f79e72b 100644
--- a/src/common/util.c
+++ b/src/common/util.c
@@ -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;





More information about the tor-commits mailing list