Loading src/app/main/main.c +0 −29 Original line number Diff line number Diff line Loading @@ -1388,35 +1388,6 @@ tor_run_main(const tor_main_configuration_t *tor_cfg) { int result = 0; #ifdef _WIN32 #ifndef HeapEnableTerminationOnCorruption #define HeapEnableTerminationOnCorruption 1 #endif /* On heap corruption, just give up; don't try to play along. */ HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); /* SetProcessDEPPolicy is only supported on 32-bit Windows. * (On 64-bit Windows it always fails, and some compilers don't like the * PSETDEP cast.) * 32-bit Windows defines _WIN32. * 64-bit Windows defines _WIN32 and _WIN64. */ #ifndef _WIN64 /* Call SetProcessDEPPolicy to permanently enable DEP. The function will not resolve on earlier versions of Windows, and failure is not dangerous. */ HMODULE hMod = GetModuleHandleA("Kernel32.dll"); if (hMod) { typedef BOOL (WINAPI *PSETDEP)(DWORD); PSETDEP setdeppolicy = (PSETDEP)GetProcAddress(hMod, "SetProcessDEPPolicy"); if (setdeppolicy) { /* PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION */ setdeppolicy(3); } } #endif /* !defined(_WIN64) */ #endif /* defined(_WIN32) */ #ifdef EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED event_set_mem_functions(tor_malloc_, tor_realloc_, tor_free_); #endif Loading src/app/main/subsystem_list.c +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include "lib/cc/torint.h" #include "lib/err/torerr_sys.h" #include "lib/process/winprocess_sys.h" #include <stddef.h> Loading @@ -16,6 +17,7 @@ * Global list of the subsystems in Tor, in the order of their initialization. **/ const subsys_fns_t *tor_subsystems[] = { &sys_winprocess, &sys_torerr, }; Loading src/lib/process/.may_include +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ lib/malloc/*.h lib/net/*.h lib/process/*.h lib/string/*.h lib/subsys/*.h lib/testsupport/*.h lib/thread/*.h Loading src/lib/process/include.am +4 −2 Original line number Diff line number Diff line Loading @@ -12,7 +12,8 @@ src_lib_libtor_process_a_SOURCES = \ src/lib/process/restrict.c \ src/lib/process/setuid.c \ src/lib/process/subprocess.c \ src/lib/process/waitpid.c src/lib/process/waitpid.c \ src/lib/process/winprocess_sys.c src_lib_libtor_process_testing_a_SOURCES = \ $(src_lib_libtor_process_a_SOURCES) Loading @@ -26,4 +27,5 @@ noinst_HEADERS += \ src/lib/process/restrict.h \ src/lib/process/setuid.h \ src/lib/process/subprocess.h \ src/lib/process/waitpid.h src/lib/process/waitpid.h \ src/lib/process/winprocess_sys.h src/lib/process/winprocess_sys.c 0 → 100644 +64 −0 Original line number Diff line number Diff line /* Copyright (c) 2018, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** * \file winprocess_sys.c * \brief Subsystem object for windows process setup. **/ #include "orconfig.h" #include "lib/subsys/subsys.h" #include "lib/process/winprocess_sys.h" #include <stdbool.h> #include <stddef.h> #ifdef _WIN32 #include <windows.h> #define WINPROCESS_SYS_ENABLED true static int init_windows_process_params(void) { #ifndef HeapEnableTerminationOnCorruption #define HeapEnableTerminationOnCorruption 1 #endif /* On heap corruption, just give up; don't try to play along. */ HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); /* SetProcessDEPPolicy is only supported on 32-bit Windows. * (On 64-bit Windows it always fails, and some compilers don't like the * PSETDEP cast.) * 32-bit Windows defines _WIN32. * 64-bit Windows defines _WIN32 and _WIN64. */ #ifndef _WIN64 /* Call SetProcessDEPPolicy to permanently enable DEP. The function will not resolve on earlier versions of Windows, and failure is not dangerous. */ HMODULE hMod = GetModuleHandleA("Kernel32.dll"); if (hMod) { typedef BOOL (WINAPI *PSETDEP)(DWORD); PSETDEP setdeppolicy = (PSETDEP)GetProcAddress(hMod, "SetProcessDEPPolicy"); if (setdeppolicy) { /* PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION */ setdeppolicy(3); } } #endif /* !defined(_WIN64) */ return 0; } #else /* !defined(_WIN32) */ #define WINPROCESS_SYS_ENABLED false #define init_windows_process_params NULL #endif /* defined(_WIN32) */ const subsys_fns_t sys_winprocess = { .name = "winprocess", .level = -100, .supported = WINPROCESS_SYS_ENABLED, .initialize = init_windows_process_params, }; Loading
src/app/main/main.c +0 −29 Original line number Diff line number Diff line Loading @@ -1388,35 +1388,6 @@ tor_run_main(const tor_main_configuration_t *tor_cfg) { int result = 0; #ifdef _WIN32 #ifndef HeapEnableTerminationOnCorruption #define HeapEnableTerminationOnCorruption 1 #endif /* On heap corruption, just give up; don't try to play along. */ HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); /* SetProcessDEPPolicy is only supported on 32-bit Windows. * (On 64-bit Windows it always fails, and some compilers don't like the * PSETDEP cast.) * 32-bit Windows defines _WIN32. * 64-bit Windows defines _WIN32 and _WIN64. */ #ifndef _WIN64 /* Call SetProcessDEPPolicy to permanently enable DEP. The function will not resolve on earlier versions of Windows, and failure is not dangerous. */ HMODULE hMod = GetModuleHandleA("Kernel32.dll"); if (hMod) { typedef BOOL (WINAPI *PSETDEP)(DWORD); PSETDEP setdeppolicy = (PSETDEP)GetProcAddress(hMod, "SetProcessDEPPolicy"); if (setdeppolicy) { /* PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION */ setdeppolicy(3); } } #endif /* !defined(_WIN64) */ #endif /* defined(_WIN32) */ #ifdef EVENT_SET_MEM_FUNCTIONS_IMPLEMENTED event_set_mem_functions(tor_malloc_, tor_realloc_, tor_free_); #endif Loading
src/app/main/subsystem_list.c +2 −0 Original line number Diff line number Diff line Loading @@ -9,6 +9,7 @@ #include "lib/cc/torint.h" #include "lib/err/torerr_sys.h" #include "lib/process/winprocess_sys.h" #include <stddef.h> Loading @@ -16,6 +17,7 @@ * Global list of the subsystems in Tor, in the order of their initialization. **/ const subsys_fns_t *tor_subsystems[] = { &sys_winprocess, &sys_torerr, }; Loading
src/lib/process/.may_include +1 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ lib/malloc/*.h lib/net/*.h lib/process/*.h lib/string/*.h lib/subsys/*.h lib/testsupport/*.h lib/thread/*.h Loading
src/lib/process/include.am +4 −2 Original line number Diff line number Diff line Loading @@ -12,7 +12,8 @@ src_lib_libtor_process_a_SOURCES = \ src/lib/process/restrict.c \ src/lib/process/setuid.c \ src/lib/process/subprocess.c \ src/lib/process/waitpid.c src/lib/process/waitpid.c \ src/lib/process/winprocess_sys.c src_lib_libtor_process_testing_a_SOURCES = \ $(src_lib_libtor_process_a_SOURCES) Loading @@ -26,4 +27,5 @@ noinst_HEADERS += \ src/lib/process/restrict.h \ src/lib/process/setuid.h \ src/lib/process/subprocess.h \ src/lib/process/waitpid.h src/lib/process/waitpid.h \ src/lib/process/winprocess_sys.h
src/lib/process/winprocess_sys.c 0 → 100644 +64 −0 Original line number Diff line number Diff line /* Copyright (c) 2018, The Tor Project, Inc. */ /* See LICENSE for licensing information */ /** * \file winprocess_sys.c * \brief Subsystem object for windows process setup. **/ #include "orconfig.h" #include "lib/subsys/subsys.h" #include "lib/process/winprocess_sys.h" #include <stdbool.h> #include <stddef.h> #ifdef _WIN32 #include <windows.h> #define WINPROCESS_SYS_ENABLED true static int init_windows_process_params(void) { #ifndef HeapEnableTerminationOnCorruption #define HeapEnableTerminationOnCorruption 1 #endif /* On heap corruption, just give up; don't try to play along. */ HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0); /* SetProcessDEPPolicy is only supported on 32-bit Windows. * (On 64-bit Windows it always fails, and some compilers don't like the * PSETDEP cast.) * 32-bit Windows defines _WIN32. * 64-bit Windows defines _WIN32 and _WIN64. */ #ifndef _WIN64 /* Call SetProcessDEPPolicy to permanently enable DEP. The function will not resolve on earlier versions of Windows, and failure is not dangerous. */ HMODULE hMod = GetModuleHandleA("Kernel32.dll"); if (hMod) { typedef BOOL (WINAPI *PSETDEP)(DWORD); PSETDEP setdeppolicy = (PSETDEP)GetProcAddress(hMod, "SetProcessDEPPolicy"); if (setdeppolicy) { /* PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION */ setdeppolicy(3); } } #endif /* !defined(_WIN64) */ return 0; } #else /* !defined(_WIN32) */ #define WINPROCESS_SYS_ENABLED false #define init_windows_process_params NULL #endif /* defined(_WIN32) */ const subsys_fns_t sys_winprocess = { .name = "winprocess", .level = -100, .supported = WINPROCESS_SYS_ENABLED, .initialize = init_windows_process_params, };