Index: chrome/app/delay_load_hook_win.cc |
diff --git a/chrome/app/delay_load_hook_win.cc b/chrome/app/delay_load_hook_win.cc |
index 52384d411e1ec4120fdbfd3a7cbb53f68d3ec588..fdbf540d7f6c1c1a83beba9f9b6a9557f9d6345b 100644 |
--- a/chrome/app/delay_load_hook_win.cc |
+++ b/chrome/app/delay_load_hook_win.cc |
@@ -16,8 +16,18 @@ |
// Alternatively referencing the ChromeDelayLoadHook function somehow will |
// cause this declaration of these variables to take preference to the delay |
// load runtime's defaults (in delayimp.lib). |
+#if _MSC_FULL_VER >= 190024112 |
+// Prior to Visual Studio 2015 Update 3, these hooks were non-const. They were |
+// made const to improve security (global, writable function pointers are bad). |
+// This #ifdef is needed for testing of VS 2015 Update 3 pre-release and can be |
+// removed when we formally switch to Update 3 or higher. |
+// TODO(612313): remove the #if when we update toolchains. |
+const PfnDliHook __pfnDliNotifyHook2 = ChromeDelayLoadHook; |
+const PfnDliHook __pfnDliFailureHook2 = ChromeDelayLoadHook; |
+#else |
PfnDliHook __pfnDliNotifyHook2 = ChromeDelayLoadHook; |
PfnDliHook __pfnDliFailureHook2 = ChromeDelayLoadHook; |
+#endif |
namespace { |