| OLD | NEW |
| 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/scoped_handle_win.h" | 5 #include "base/win/scoped_handle.h" |
| 6 #include "testing/gtest/include/gtest/gtest.h" | |
| 7 #include "sandbox/src/sandbox.h" | 6 #include "sandbox/src/sandbox.h" |
| 8 #include "sandbox/src/sandbox_policy.h" | 7 #include "sandbox/src/sandbox_policy.h" |
| 9 #include "sandbox/src/sandbox_factory.h" | 8 #include "sandbox/src/sandbox_factory.h" |
| 10 #include "sandbox/src/nt_internals.h" | 9 #include "sandbox/src/nt_internals.h" |
| 11 #include "sandbox/tests/common/controller.h" | 10 #include "sandbox/tests/common/controller.h" |
| 11 #include "testing/gtest/include/gtest/gtest.h" |
| 12 | 12 |
| 13 namespace sandbox { | 13 namespace sandbox { |
| 14 | 14 |
| 15 SBOX_TESTS_COMMAND int Event_Open(int argc, wchar_t **argv) { | 15 SBOX_TESTS_COMMAND int Event_Open(int argc, wchar_t **argv) { |
| 16 if (argc != 2) | 16 if (argc != 2) |
| 17 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 17 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
| 18 | 18 |
| 19 DWORD desired_access = SYNCHRONIZE; | 19 DWORD desired_access = SYNCHRONIZE; |
| 20 if (L'f' == argv[0][0]) | 20 if (L'f' == argv[0][0]) |
| 21 desired_access = EVENT_ALL_ACCESS; | 21 desired_access = EVENT_ALL_ACCESS; |
| 22 | 22 |
| 23 ScopedHandle event_open(::OpenEvent(desired_access, FALSE, argv[1])); | 23 base::win::ScopedHandle event_open(::OpenEvent( |
| 24 desired_access, FALSE, argv[1])); |
| 24 DWORD error_open = ::GetLastError(); | 25 DWORD error_open = ::GetLastError(); |
| 25 | 26 |
| 26 if (event_open.Get()) | 27 if (event_open.Get()) |
| 27 return SBOX_TEST_SUCCEEDED; | 28 return SBOX_TEST_SUCCEEDED; |
| 28 | 29 |
| 29 if (ERROR_ACCESS_DENIED == error_open || | 30 if (ERROR_ACCESS_DENIED == error_open || |
| 30 ERROR_BAD_PATHNAME == error_open) | 31 ERROR_BAD_PATHNAME == error_open) |
| 31 return SBOX_TEST_DENIED; | 32 return SBOX_TEST_DENIED; |
| 32 | 33 |
| 33 return SBOX_TEST_FAILED; | 34 return SBOX_TEST_FAILED; |
| 34 } | 35 } |
| 35 | 36 |
| 36 SBOX_TESTS_COMMAND int Event_CreateOpen(int argc, wchar_t **argv) { | 37 SBOX_TESTS_COMMAND int Event_CreateOpen(int argc, wchar_t **argv) { |
| 37 if (argc < 2 || argc > 3) | 38 if (argc < 2 || argc > 3) |
| 38 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 39 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
| 39 | 40 |
| 40 wchar_t *event_name = NULL; | 41 wchar_t *event_name = NULL; |
| 41 if (3 == argc) | 42 if (3 == argc) |
| 42 event_name = argv[2]; | 43 event_name = argv[2]; |
| 43 | 44 |
| 44 BOOL manual_reset = FALSE; | 45 BOOL manual_reset = FALSE; |
| 45 BOOL initial_state = FALSE; | 46 BOOL initial_state = FALSE; |
| 46 if (L't' == argv[0][0]) | 47 if (L't' == argv[0][0]) |
| 47 manual_reset = TRUE; | 48 manual_reset = TRUE; |
| 48 if (L't' == argv[1][0]) | 49 if (L't' == argv[1][0]) |
| 49 initial_state = TRUE; | 50 initial_state = TRUE; |
| 50 | 51 |
| 51 ScopedHandle event_create(::CreateEvent(NULL, manual_reset, initial_state, | 52 base::win::ScopedHandle event_create(::CreateEvent( |
| 52 event_name)); | 53 NULL, manual_reset, initial_state, event_name)); |
| 53 DWORD error_create = ::GetLastError(); | 54 DWORD error_create = ::GetLastError(); |
| 54 ScopedHandle event_open; | 55 base::win::ScopedHandle event_open; |
| 55 if (event_name) | 56 if (event_name) |
| 56 event_open.Set(::OpenEvent(EVENT_ALL_ACCESS, FALSE, event_name)); | 57 event_open.Set(::OpenEvent(EVENT_ALL_ACCESS, FALSE, event_name)); |
| 57 | 58 |
| 58 if (event_create.Get()) { | 59 if (event_create.Get()) { |
| 59 DWORD wait = ::WaitForSingleObject(event_create.Get(), 0); | 60 DWORD wait = ::WaitForSingleObject(event_create.Get(), 0); |
| 60 if (initial_state && WAIT_OBJECT_0 != wait) | 61 if (initial_state && WAIT_OBJECT_0 != wait) |
| 61 return SBOX_TEST_FAILED; | 62 return SBOX_TEST_FAILED; |
| 62 | 63 |
| 63 if (!initial_state && WAIT_TIMEOUT != wait) | 64 if (!initial_state && WAIT_TIMEOUT != wait) |
| 64 return SBOX_TEST_FAILED; | 65 return SBOX_TEST_FAILED; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 117 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC, | 118 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC, |
| 118 TargetPolicy::EVENTS_ALLOW_READONLY, | 119 TargetPolicy::EVENTS_ALLOW_READONLY, |
| 119 L"test2")); | 120 L"test2")); |
| 120 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC, | 121 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC, |
| 121 TargetPolicy::EVENTS_ALLOW_READONLY, | 122 TargetPolicy::EVENTS_ALLOW_READONLY, |
| 122 L"test5")); | 123 L"test5")); |
| 123 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC, | 124 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC, |
| 124 TargetPolicy::EVENTS_ALLOW_READONLY, | 125 TargetPolicy::EVENTS_ALLOW_READONLY, |
| 125 L"test6")); | 126 L"test6")); |
| 126 | 127 |
| 127 ScopedHandle handle1(::CreateEvent(NULL, FALSE, FALSE, L"test1")); | 128 base::win::ScopedHandle handle1(::CreateEvent(NULL, FALSE, FALSE, L"test1")); |
| 128 ScopedHandle handle2(::CreateEvent(NULL, FALSE, FALSE, L"test2")); | 129 base::win::ScopedHandle handle2(::CreateEvent(NULL, FALSE, FALSE, L"test2")); |
| 129 ScopedHandle handle3(::CreateEvent(NULL, FALSE, FALSE, L"test3")); | 130 base::win::ScopedHandle handle3(::CreateEvent(NULL, FALSE, FALSE, L"test3")); |
| 130 ScopedHandle handle4(::CreateEvent(NULL, FALSE, FALSE, L"test4")); | 131 base::win::ScopedHandle handle4(::CreateEvent(NULL, FALSE, FALSE, L"test4")); |
| 131 | 132 |
| 132 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen f f")); | 133 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen f f")); |
| 133 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen t f")); | 134 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen t f")); |
| 134 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test1")); | 135 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test1")); |
| 135 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_Open s test2")); | 136 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_Open s test2")); |
| 136 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test3")); | 137 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test3")); |
| 137 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open s test4")); | 138 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open s test4")); |
| 138 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f f test5")); | 139 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f f test5")); |
| 139 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t f test6")); | 140 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t f test6")); |
| 140 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f t test5")); | 141 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f t test5")); |
| 141 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t t test6")); | 142 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t t test6")); |
| 142 } | 143 } |
| 143 | 144 |
| 144 } // namespace sandbox | 145 } // namespace sandbox |
| OLD | NEW |