diff options
author | Werner Koch <wk@gnupg.org> | 2023-01-11 10:04:08 +0100 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2023-01-11 11:33:26 +0100 |
commit | d1298fa28753e0a0273b2b12c173999e845e10a9 (patch) | |
tree | 2bf41311a972d274c485f753b3ce9144120003b3 /common | |
parent | doc: Minor fix of the --keyserver option. (diff) | |
download | gnupg2-d1298fa28753e0a0273b2b12c173999e845e10a9.tar.xz gnupg2-d1298fa28753e0a0273b2b12c173999e845e10a9.zip |
w32: Make sure DEP is enabled.
* common/init.c (_init_common_subsystems): Test and set the DEP
Policy.
--
Note that this change will now definitely require Windows XP SP3.
Diffstat (limited to 'common')
-rw-r--r-- | common/init.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/common/init.c b/common/init.c index 269119ff1..62a48f8c7 100644 --- a/common/init.c +++ b/common/init.c @@ -30,6 +30,9 @@ #include <config.h> #ifdef HAVE_W32_SYSTEM +# if _WIN32_WINNT < 0x0600 +# define _WIN32_WINNT 0x0600 /* Required for SetProcessDEPPolicy. */ +# endif # ifdef HAVE_WINSOCK2_H # include <winsock2.h> # endif @@ -213,7 +216,21 @@ _init_common_subsystems (gpg_err_source_t errsource, int *argcp, char ***argvp) log_set_socket_dir_cb (gnupg_socketdir); #if HAVE_W32_SYSTEM - /* For Standard Windows we use our own parser for the command line + /* Make sure that Data Execution Prevention is enabled. */ + if (GetSystemDEPPolicy () >= 2) + { + DWORD flags; + BOOL perm; + + if (!GetProcessDEPPolicy (GetCurrentProcess (), &flags, &perm)) + log_info ("error getting DEP policy: %s\n", + w32_strerror (GetLastError())); + else if (!(flags & PROCESS_DEP_ENABLE) + && !SetProcessDEPPolicy (PROCESS_DEP_ENABLE)) + log_info ("Warning: Enabling DEP failed: %s (%d,%d)\n", + w32_strerror (GetLastError ()), (int)flags, (int)perm); + } + /* On Windows we use our own parser for the command line * so that we can return an array of utf-8 encoded strings. */ prepare_w32_commandline (argcp, argvp); #else |