Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(250)

Side by Side Diff: sandbox/src/sync_policy_test.cc

Issue 10689170: Move the Windows sandbox to sandbox/win (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase on top of tree (properly this time) Created 8 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « sandbox/src/sync_policy.cc ('k') | sandbox/src/target_interceptions.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #include "base/win/scoped_handle.h"
6 #include "sandbox/src/sandbox.h"
7 #include "sandbox/src/sandbox_policy.h"
8 #include "sandbox/src/sandbox_factory.h"
9 #include "sandbox/src/nt_internals.h"
10 #include "sandbox/tests/common/controller.h"
11 #include "testing/gtest/include/gtest/gtest.h"
12
13 namespace sandbox {
14
15 SBOX_TESTS_COMMAND int Event_Open(int argc, wchar_t **argv) {
16 if (argc != 2)
17 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
18
19 DWORD desired_access = SYNCHRONIZE;
20 if (L'f' == argv[0][0])
21 desired_access = EVENT_ALL_ACCESS;
22
23 base::win::ScopedHandle event_open(::OpenEvent(
24 desired_access, FALSE, argv[1]));
25 DWORD error_open = ::GetLastError();
26
27 if (event_open.Get())
28 return SBOX_TEST_SUCCEEDED;
29
30 if (ERROR_ACCESS_DENIED == error_open ||
31 ERROR_BAD_PATHNAME == error_open)
32 return SBOX_TEST_DENIED;
33
34 return SBOX_TEST_FAILED;
35 }
36
37 SBOX_TESTS_COMMAND int Event_CreateOpen(int argc, wchar_t **argv) {
38 if (argc < 2 || argc > 3)
39 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND;
40
41 wchar_t *event_name = NULL;
42 if (3 == argc)
43 event_name = argv[2];
44
45 BOOL manual_reset = FALSE;
46 BOOL initial_state = FALSE;
47 if (L't' == argv[0][0])
48 manual_reset = TRUE;
49 if (L't' == argv[1][0])
50 initial_state = TRUE;
51
52 base::win::ScopedHandle event_create(::CreateEvent(
53 NULL, manual_reset, initial_state, event_name));
54 DWORD error_create = ::GetLastError();
55 base::win::ScopedHandle event_open;
56 if (event_name)
57 event_open.Set(::OpenEvent(EVENT_ALL_ACCESS, FALSE, event_name));
58
59 if (event_create.Get()) {
60 DWORD wait = ::WaitForSingleObject(event_create.Get(), 0);
61 if (initial_state && WAIT_OBJECT_0 != wait)
62 return SBOX_TEST_FAILED;
63
64 if (!initial_state && WAIT_TIMEOUT != wait)
65 return SBOX_TEST_FAILED;
66 }
67
68 if (event_name) {
69 // Both event_open and event_create have to be valid.
70 if (event_open.Get() && event_create)
71 return SBOX_TEST_SUCCEEDED;
72
73 if (event_open.Get() && !event_create || !event_open.Get() && event_create)
74 return SBOX_TEST_FAILED;
75 } else {
76 // Only event_create has to be valid.
77 if (event_create.Get())
78 return SBOX_TEST_SUCCEEDED;
79 }
80
81 if (ERROR_ACCESS_DENIED == error_create ||
82 ERROR_BAD_PATHNAME == error_create)
83 return SBOX_TEST_DENIED;
84
85 return SBOX_TEST_FAILED;
86 }
87
88 // Tests the creation of events using all the possible combinations.
89 TEST(SyncPolicyTest, TestEvent) {
90 TestRunner runner;
91 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC,
92 TargetPolicy::EVENTS_ALLOW_ANY,
93 L"test1"));
94 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC,
95 TargetPolicy::EVENTS_ALLOW_ANY,
96 L"test2"));
97
98 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen f f"));
99 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen t f"));
100 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen f t"));
101 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen t t"));
102 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen f f test1"));
103 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen t f test2"));
104 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen f t test1"));
105 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen t t test2"));
106 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f f test3"));
107 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t f test4"));
108 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f t test3"));
109 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t t test4"));
110 }
111
112 // Tests opening events with read only access.
113 TEST(SyncPolicyTest, TestEventReadOnly) {
114 TestRunner runner;
115 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC,
116 TargetPolicy::EVENTS_ALLOW_READONLY,
117 L"test1"));
118 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC,
119 TargetPolicy::EVENTS_ALLOW_READONLY,
120 L"test2"));
121 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC,
122 TargetPolicy::EVENTS_ALLOW_READONLY,
123 L"test5"));
124 EXPECT_TRUE(runner.AddRule(TargetPolicy::SUBSYS_SYNC,
125 TargetPolicy::EVENTS_ALLOW_READONLY,
126 L"test6"));
127
128 base::win::ScopedHandle handle1(::CreateEvent(NULL, FALSE, FALSE, L"test1"));
129 base::win::ScopedHandle handle2(::CreateEvent(NULL, FALSE, FALSE, L"test2"));
130 base::win::ScopedHandle handle3(::CreateEvent(NULL, FALSE, FALSE, L"test3"));
131 base::win::ScopedHandle handle4(::CreateEvent(NULL, FALSE, FALSE, L"test4"));
132
133 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen f f"));
134 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_CreateOpen t f"));
135 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test1"));
136 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"Event_Open s test2"));
137 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open f test3"));
138 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_Open s test4"));
139 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f f test5"));
140 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t f test6"));
141 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen f t test5"));
142 EXPECT_EQ(SBOX_TEST_DENIED, runner.RunTest(L"Event_CreateOpen t t test6"));
143 }
144
145 } // namespace sandbox
OLDNEW
« no previous file with comments | « sandbox/src/sync_policy.cc ('k') | sandbox/src/target_interceptions.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698