]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Enable some windows hardening features
authorNick Mathewson <nickm@torproject.org>
Thu, 11 May 2017 20:39:02 +0000 (16:39 -0400)
committerNick Mathewson <nickm@torproject.org>
Thu, 11 May 2017 20:39:02 +0000 (16:39 -0400)
One (HeapEnableTerminationOnCorruption) is on-by-default since win8;
the other (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) supposedly only
affects ATL, which (we think) we don't use.  Still, these are good
hygiene. Closes ticket 21953.

changes/ticket21953 [new file with mode: 0644]
src/or/main.c

diff --git a/changes/ticket21953 b/changes/ticket21953
new file mode 100644 (file)
index 0000000..7cc84f5
--- /dev/null
@@ -0,0 +1,6 @@
+  o Minor features:
+    - Enable a couple of pieces of Windows hardening: one
+      (HeapEnableTerminationOnCorruption) that has been on-by-default since
+      Windows 8, and unavailable before Windows 7, and one
+      (PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION) which we believe doesn't
+      affect us, but shouldn't do any harm. Closes ticket 21953.
index 66a8571901748edbd30a7995f15c3954c771d1d7..2de8ed29acb08171a5639e9a6e98a1c5eb325dda 100644 (file)
@@ -3426,6 +3426,8 @@ tor_main(int argc, char *argv[])
   int result = 0;
 
 #ifdef _WIN32
+  /* On heap corruption, just give up; don't try to play along. */
+  HeapSetInformation(NULL, HeapEnableTerminationOnCorruption, NULL, 0);
   /* Call SetProcessDEPPolicy to permanently enable DEP.
      The function will not resolve on earlier versions of Windows,
      and failure is not dangerous. */
@@ -3434,7 +3436,10 @@ tor_main(int argc, char *argv[])
     typedef BOOL (WINAPI *PSETDEP)(DWORD);
     PSETDEP setdeppolicy = (PSETDEP)GetProcAddress(hMod,
                            "SetProcessDEPPolicy");
-    if (setdeppolicy) setdeppolicy(1); /* PROCESS_DEP_ENABLE */
+    if (setdeppolicy) {
+      /* PROCESS_DEP_ENABLE | PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION */
+      setdeppolicy(3);
+    }
   }
 #endif