Index: sandbox/win/src/dep_test.cc |
=================================================================== |
--- sandbox/win/src/dep_test.cc (revision 156579) |
+++ sandbox/win/src/dep_test.cc (working copy) |
@@ -1,158 +0,0 @@ |
-// Copyright (c) 2011 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/win/src/dep.h" |
- |
-#include "sandbox/win/src/sandbox_utils.h" |
-#include "sandbox/win/tests/common/controller.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace sandbox { |
- |
-namespace { |
- |
-BYTE kReturnCode[] = { |
- // ret |
- 0xC3, |
-}; |
- |
-typedef void (*NullFunction)(); |
- |
-// This doesn't fail on Vista Service Pack 0 but it does on XP SP2 and Vista |
-// SP1. I guess this is a bug in Vista SP0 w.r.t .data PE section. Needs |
-// investigation to be sure it is a bug and not an error on my part. |
-bool GenerateDepException() { |
- bool result = false; |
- __try { |
- void* code = kReturnCode; |
- // Call this code. |
- reinterpret_cast<NullFunction>(code)(); |
- } __except(EXCEPTION_EXECUTE_HANDLER) { |
- result = true; |
- } |
- return result; |
-} |
- |
-bool GenerateDepAtl7Exception() { |
- // TODO(maruel): bug 1207762 Somehow test ATL7 |
- return GenerateDepException(); |
-} |
- |
-SBOX_TESTS_COMMAND int CheckDepLevel(int argc, wchar_t **argv) { |
- if (1 != argc) |
- return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
- |
- int flag = _wtoi(argv[0]); |
- switch (flag) { |
- case 1: |
- // DEP is completely disabled. |
- if (!SetCurrentProcessDEP(DEP_DISABLED)) { |
- if (!IsXPSP2OrLater()) |
- // That's fine. |
- return SBOX_TEST_SUCCEEDED; |
- return SBOX_TEST_DENIED; |
- } |
- if (GenerateDepException()) |
- return SBOX_TEST_FAILED; |
- if (GenerateDepAtl7Exception()) |
- return SBOX_TEST_FAILED; |
- return SBOX_TEST_SUCCEEDED; |
- case 2: |
- // DEP is enabled with ATL7 thunk support. |
- if (!SetCurrentProcessDEP(DEP_ENABLED_ATL7_COMPAT)) { |
- if (!IsXPSP2OrLater()) |
- // That's fine. |
- return SBOX_TEST_SUCCEEDED; |
- return SBOX_TEST_DENIED; |
- } |
- if (!GenerateDepException()) |
- return SBOX_TEST_FAILED; |
- if (GenerateDepAtl7Exception()) |
- return SBOX_TEST_FAILED; |
- return SBOX_TEST_SUCCEEDED; |
- case 3: |
- // DEP is enabled. |
- if (!SetCurrentProcessDEP(DEP_ENABLED)) { |
- if (!IsXPSP2OrLater()) |
- // That's fine. |
- return SBOX_TEST_SUCCEEDED; |
- return SBOX_TEST_DENIED; |
- } |
- if (!GenerateDepException()) |
- return SBOX_TEST_FAILED; |
- if (!GenerateDepAtl7Exception()) |
- return SBOX_TEST_FAILED; |
- return SBOX_TEST_SUCCEEDED; |
- case 4: |
- // DEP can't be disabled. |
- if (!SetCurrentProcessDEP(DEP_ENABLED)) { |
- if (!IsXPSP2OrLater()) |
- // That's fine. |
- return SBOX_TEST_SUCCEEDED; |
- } |
- if (SetCurrentProcessDEP(DEP_DISABLED)) { |
- return SBOX_TEST_DENIED; |
- } |
- // Verify that it is still enabled. |
- if (!GenerateDepException()) |
- return SBOX_TEST_FAILED; |
- if (!GenerateDepAtl7Exception()) |
- return SBOX_TEST_FAILED; |
- return SBOX_TEST_SUCCEEDED; |
- case 5: |
- // DEP can't be disabled. |
- if (!SetCurrentProcessDEP(DEP_ENABLED_ATL7_COMPAT)) { |
- if (!IsXPSP2OrLater()) |
- // That's fine. |
- return SBOX_TEST_SUCCEEDED; |
- } |
- if (SetCurrentProcessDEP(DEP_DISABLED)) { |
- return SBOX_TEST_DENIED; |
- } |
- // Verify that it is still enabled. |
- if (!GenerateDepException()) |
- return SBOX_TEST_FAILED; |
- if (!GenerateDepAtl7Exception()) |
- return SBOX_TEST_FAILED; |
- return SBOX_TEST_SUCCEEDED; |
- case 6: |
- // DEP can't be disabled. |
- if (!SetCurrentProcessDEP(DEP_ENABLED)) { |
- if (!IsXPSP2OrLater()) |
- // That's fine. |
- return SBOX_TEST_SUCCEEDED; |
- } |
- if (SetCurrentProcessDEP(DEP_ENABLED_ATL7_COMPAT)) { |
- return SBOX_TEST_DENIED; |
- } |
- // Verify that it is still enabled. |
- if (!GenerateDepException()) |
- return SBOX_TEST_FAILED; |
- if (!GenerateDepAtl7Exception()) |
- return SBOX_TEST_FAILED; |
- return SBOX_TEST_SUCCEEDED; |
- default: |
- return SBOX_TEST_INVALID_PARAMETER; |
- } |
- return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
-} |
- |
-} // namespace |
- |
-// This test is disabled. See bug 1275842 |
-TEST(DepTest, DISABLED_TestDepDisable) { |
- TestRunner runner(JOB_UNPROTECTED, USER_INTERACTIVE, USER_INTERACTIVE); |
- |
- runner.SetTimeout(INFINITE); |
- |
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"CheckDepLevel 1")); |
- // TODO(maruel): bug 1207762 Somehow test ATL7 |
- // EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"CheckDepLevel 2")); |
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"CheckDepLevel 3")); |
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"CheckDepLevel 4")); |
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"CheckDepLevel 5")); |
- EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"CheckDepLevel 6")); |
-} |
- |
-} // namespace sandbox |