| OLD | NEW |
| 1 // Copyright (c) 2011 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 "sandbox/win/src/sync_policy_test.h" | 5 #include "sandbox/win/src/sync_policy_test.h" |
| 6 | 6 |
| 7 #include "base/win/scoped_handle.h" | 7 #include "base/win/scoped_handle.h" |
| 8 #include "sandbox/win/src/sandbox.h" | 8 #include "sandbox/win/src/sandbox.h" |
| 9 #include "sandbox/win/src/sandbox_policy.h" | 9 #include "sandbox/win/src/sandbox_policy.h" |
| 10 #include "sandbox/win/src/sandbox_factory.h" | 10 #include "sandbox/win/src/sandbox_factory.h" |
| 11 #include "sandbox/win/src/nt_internals.h" | 11 #include "sandbox/win/src/nt_internals.h" |
| 12 #include "testing/gtest/include/gtest/gtest.h" | 12 #include "testing/gtest/include/gtest/gtest.h" |
| 13 | 13 |
| 14 namespace sandbox { | 14 namespace sandbox { |
| 15 | 15 |
| 16 SBOX_TESTS_COMMAND int Event_Open(int argc, wchar_t **argv) { | 16 SBOX_TESTS_COMMAND int Event_Open(int argc, wchar_t **argv) { |
| 17 if (argc != 2) | 17 if (argc != 2) |
| 18 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 18 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
| 19 | 19 |
| 20 DWORD desired_access = SYNCHRONIZE; | 20 DWORD desired_access = SYNCHRONIZE; |
| 21 if (L'f' == argv[0][0]) | 21 if (L'f' == argv[0][0]) |
| 22 desired_access = EVENT_ALL_ACCESS; | 22 desired_access = EVENT_ALL_ACCESS; |
| 23 | 23 |
| 24 base::win::ScopedHandle event_open(::OpenEvent( | 24 base::win::ScopedHandle event_open(::OpenEvent( |
| 25 desired_access, FALSE, argv[1])); | 25 desired_access, FALSE, argv[1])); |
| 26 DWORD error_open = ::GetLastError(); | 26 DWORD error_open = ::GetLastError(); |
| 27 | 27 |
| 28 if (event_open.Get()) | 28 if (event_open.IsValid()) |
| 29 return SBOX_TEST_SUCCEEDED; | 29 return SBOX_TEST_SUCCEEDED; |
| 30 | 30 |
| 31 if (ERROR_ACCESS_DENIED == error_open || | 31 if (ERROR_ACCESS_DENIED == error_open || |
| 32 ERROR_BAD_PATHNAME == error_open) | 32 ERROR_BAD_PATHNAME == error_open) |
| 33 return SBOX_TEST_DENIED; | 33 return SBOX_TEST_DENIED; |
| 34 | 34 |
| 35 return SBOX_TEST_FAILED; | 35 return SBOX_TEST_FAILED; |
| 36 } | 36 } |
| 37 | 37 |
| 38 SBOX_TESTS_COMMAND int Event_CreateOpen(int argc, wchar_t **argv) { | 38 SBOX_TESTS_COMMAND int Event_CreateOpen(int argc, wchar_t **argv) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 50 if (L't' == argv[1][0]) | 50 if (L't' == argv[1][0]) |
| 51 initial_state = TRUE; | 51 initial_state = TRUE; |
| 52 | 52 |
| 53 base::win::ScopedHandle event_create(::CreateEvent( | 53 base::win::ScopedHandle event_create(::CreateEvent( |
| 54 NULL, manual_reset, initial_state, event_name)); | 54 NULL, manual_reset, initial_state, event_name)); |
| 55 DWORD error_create = ::GetLastError(); | 55 DWORD error_create = ::GetLastError(); |
| 56 base::win::ScopedHandle event_open; | 56 base::win::ScopedHandle event_open; |
| 57 if (event_name) | 57 if (event_name) |
| 58 event_open.Set(::OpenEvent(EVENT_ALL_ACCESS, FALSE, event_name)); | 58 event_open.Set(::OpenEvent(EVENT_ALL_ACCESS, FALSE, event_name)); |
| 59 | 59 |
| 60 if (event_create.Get()) { | 60 if (event_create.IsValid()) { |
| 61 DWORD wait = ::WaitForSingleObject(event_create.Get(), 0); | 61 DWORD wait = ::WaitForSingleObject(event_create.Get(), 0); |
| 62 if (initial_state && WAIT_OBJECT_0 != wait) | 62 if (initial_state && WAIT_OBJECT_0 != wait) |
| 63 return SBOX_TEST_FAILED; | 63 return SBOX_TEST_FAILED; |
| 64 | 64 |
| 65 if (!initial_state && WAIT_TIMEOUT != wait) | 65 if (!initial_state && WAIT_TIMEOUT != wait) |
| 66 return SBOX_TEST_FAILED; | 66 return SBOX_TEST_FAILED; |
| 67 } | 67 } |
| 68 | 68 |
| 69 if (event_name) { | 69 if (event_name) { |
| 70 // Both event_open and event_create have to be valid. | 70 // Both event_open and event_create have to be valid. |
| 71 if (event_open.Get() && event_create) | 71 if (event_open.IsValid() && event_create.IsValid()) |
| 72 return SBOX_TEST_SUCCEEDED; | 72 return SBOX_TEST_SUCCEEDED; |
| 73 | 73 |
| 74 if (event_open.Get() && !event_create || !event_open.Get() && event_create) | 74 if (event_open.IsValid() && !event_create.IsValid() || |
| 75 !event_open.IsValid() && event_create.IsValid()) |
| 75 return SBOX_TEST_FAILED; | 76 return SBOX_TEST_FAILED; |
| 76 } else { | 77 } else { |
| 77 // Only event_create has to be valid. | 78 // Only event_create has to be valid. |
| 78 if (event_create.Get()) | 79 if (event_create.Get()) |
| 79 return SBOX_TEST_SUCCEEDED; | 80 return SBOX_TEST_SUCCEEDED; |
| 80 } | 81 } |
| 81 | 82 |
| 82 if (ERROR_ACCESS_DENIED == error_create || | 83 if (ERROR_ACCESS_DENIED == error_create || |
| 83 ERROR_BAD_PATHNAME == error_create) | 84 ERROR_BAD_PATHNAME == error_create) |
| 84 return SBOX_TEST_DENIED; | 85 return SBOX_TEST_DENIED; |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 137 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_Open s test2")); | 138 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_Open s test2")); |
| 138 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test3")); | 139 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test3")); |
| 139 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open s test4")); | 140 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open s test4")); |
| 140 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f f test5")); | 141 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f f test5")); |
| 141 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t f test6")); | 142 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t f test6")); |
| 142 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f t test5")); | 143 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f t test5")); |
| 143 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t t test6")); | 144 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t t test6")); |
| 144 } | 145 } |
| 145 | 146 |
| 146 } // namespace sandbox | 147 } // namespace sandbox |
| OLD | NEW |