summaryrefslogtreecommitdiffstats
path: root/sandbox/src/dep.cc
diff options
context:
space:
mode:
Diffstat (limited to 'sandbox/src/dep.cc')
-rw-r--r--sandbox/src/dep.cc89
1 files changed, 0 insertions, 89 deletions
diff --git a/sandbox/src/dep.cc b/sandbox/src/dep.cc
deleted file mode 100644
index 4995601..0000000
--- a/sandbox/src/dep.cc
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "sandbox/src/dep.h"
-
-#include <windows.h>
-
-#include "base/logging.h"
-
-namespace sandbox {
-
-namespace {
-
-// These values are in the Windows 2008 SDK but not in the previous ones. Define
-// the values here until we're sure everyone updated their SDK.
-#ifndef PROCESS_DEP_ENABLE
-#define PROCESS_DEP_ENABLE 0x00000001
-#endif
-#ifndef PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION
-#define PROCESS_DEP_DISABLE_ATL_THUNK_EMULATION 0x00000002
-#endif
-
-// SetProcessDEPPolicy is declared in the Windows 2008 SDK.
-typedef BOOL (WINAPI *FnSetProcessDEPPolicy)(DWORD dwFlags);
-
-enum PROCESS_INFORMATION_CLASS {
- ProcessExecuteFlags = 0x22,
-};
-
-// Flags named as per their usage.
-const int MEM_EXECUTE_OPTION_ENABLE = 1;
-const int MEM_EXECUTE_OPTION_DISABLE = 2;
-const int MEM_EXECUTE_OPTION_ATL7_THUNK_EMULATION = 4;
-const int MEM_EXECUTE_OPTION_PERMANENT = 8;
-
-// Not exactly the right signature but that will suffice.
-typedef HRESULT (WINAPI *FnNtSetInformationProcess)(
- HANDLE ProcessHandle,
- PROCESS_INFORMATION_CLASS ProcessInformationClass,
- PVOID ProcessInformation,
- ULONG ProcessInformationLength);
-
-} // namespace
-
-bool SetCurrentProcessDEP(DepEnforcement enforcement) {
-#ifdef _WIN64
- // DEP is always on in x64.
- return enforcement != DEP_DISABLED;
-#endif
- // Only available on Windows XP SP2 and Windows Server 2003 SP1.
- // For reference: http://www.uninformed.org/?v=2&a=4
- FnNtSetInformationProcess NtSetInformationProc =
- reinterpret_cast<FnNtSetInformationProcess>(
- GetProcAddress(GetModuleHandle(L"ntdll.dll"),
- "NtSetInformationProcess"));
-
- if (!NtSetInformationProc)
- return false;
-
- // Flags being used as per SetProcessDEPPolicy on Vista SP1.
- ULONG dep_flags;
- switch (enforcement) {
- case DEP_DISABLED:
- // 2
- dep_flags = MEM_EXECUTE_OPTION_DISABLE;
- break;
- case DEP_ENABLED:
- // 9
- dep_flags = MEM_EXECUTE_OPTION_PERMANENT | MEM_EXECUTE_OPTION_ENABLE;
- break;
- case DEP_ENABLED_ATL7_COMPAT:
- // 0xD
- dep_flags = MEM_EXECUTE_OPTION_PERMANENT | MEM_EXECUTE_OPTION_ENABLE |
- MEM_EXECUTE_OPTION_ATL7_THUNK_EMULATION;
- break;
- default:
- NOTREACHED();
- return false;
- }
-
- HRESULT status = NtSetInformationProc(GetCurrentProcess(),
- ProcessExecuteFlags,
- &dep_flags,
- sizeof(dep_flags));
- return SUCCEEDED(status);
-}
-
-} // namespace sandbox