aboutsummaryrefslogtreecommitdiff
path: root/src/init.cpp
diff options
context:
space:
mode:
authorWladimir J. van der Laan <[email protected]>2012-08-13 21:01:17 -0700
committerWladimir J. van der Laan <[email protected]>2012-08-13 21:01:17 -0700
commita55ed9d5bb89046acfd3ca2c0545707a76499684 (patch)
treeed32cdca547a8e0603ec345d1b44bc276d12123a /src/init.cpp
parentMerge pull request #936 from luke-jr/gmp_bip (diff)
parentBitcoin-Qt (Windows only): enable DEP for bitcoin-qt.exe (diff)
downloaddiscoin-a55ed9d5bb89046acfd3ca2c0545707a76499684.tar.xz
discoin-a55ed9d5bb89046acfd3ca2c0545707a76499684.zip
Merge pull request #1614 from Diapolo/Qt_Win_enable_DEP
Bitcoin-Qt (Windows only): enable DEP for bitcoin-qt.exe
Diffstat (limited to 'src/init.cpp')
-rw-r--r--src/init.cpp16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/init.cpp b/src/init.cpp
index 3235bf583..2937643bc 100644
--- a/src/init.cpp
+++ b/src/init.cpp
@@ -312,10 +312,22 @@ bool AppInit2()
// Disable confusing "helpful" text message on abort, Ctrl-C
_set_abort_behavior(0, _WRITE_ABORT_MSG | _CALL_REPORTFAULT);
#endif
-#ifndef WIN32
- umask(077);
+#ifdef WIN32
+ // Enable Data Execution Prevention (DEP)
+ // Minimum supported OS versions: WinXP SP3, WinVista >= SP1, Win Server 2008
+ // A failure is non-critical and needs no further attention!
+#ifndef PROCESS_DEP_ENABLE
+// We define this here, because GCCs winbase.h limits this to _WIN32_WINNT >= 0x0601 (Windows 7),
+// which is not correct. Can be removed, when GCCs winbase.h is fixed!
+#define PROCESS_DEP_ENABLE 0x00000001
+#endif
+ typedef BOOL (WINAPI *PSETPROCDEPPOL)(DWORD);
+ PSETPROCDEPPOL setProcDEPPol = (PSETPROCDEPPOL)GetProcAddress(GetModuleHandleA("Kernel32.dll"), "SetProcessDEPPolicy");
+ if (setProcDEPPol != NULL) setProcDEPPol(PROCESS_DEP_ENABLE);
#endif
#ifndef WIN32
+ umask(077);
+
// Clean shutdown on SIGTERM
struct sigaction sa;
sa.sa_handler = HandleSIGTERM;