| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/memory/shared_memory.h" | 5 #include "base/memory/shared_memory.h" |
| 6 #include "base/strings/string_number_conversions.h" | 6 #include "base/strings/string_number_conversions.h" |
| 7 #include "base/strings/string_piece.h" | 7 #include "base/strings/string_piece.h" |
| 8 #include "base/win/scoped_process_information.h" | 8 #include "base/win/scoped_process_information.h" |
| 9 #include "base/win/windows_version.h" | 9 #include "base/win/windows_version.h" |
| 10 #include "sandbox/win/src/sandbox.h" | 10 #include "sandbox/win/src/sandbox.h" |
| (...skipping 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 base::string16 writable_cmdline_str(L"foo.exe"); | 163 base::string16 writable_cmdline_str(L"foo.exe"); |
| 164 if (!::CreateProcessW(L"foo.exe", &writable_cmdline_str[0], NULL, NULL, FALSE, | 164 if (!::CreateProcessW(L"foo.exe", &writable_cmdline_str[0], NULL, NULL, FALSE, |
| 165 0, NULL, NULL, &startup_info, &temp_process_info)) | 165 0, NULL, NULL, &startup_info, &temp_process_info)) |
| 166 return SBOX_TEST_SUCCEEDED; | 166 return SBOX_TEST_SUCCEEDED; |
| 167 base::win::ScopedProcessInformation process_info(temp_process_info); | 167 base::win::ScopedProcessInformation process_info(temp_process_info); |
| 168 return SBOX_TEST_FAILED; | 168 return SBOX_TEST_FAILED; |
| 169 } | 169 } |
| 170 | 170 |
| 171 TEST(PolicyTargetTest, SetInformationThread) { | 171 TEST(PolicyTargetTest, SetInformationThread) { |
| 172 TestRunner runner; | 172 TestRunner runner; |
| 173 if (base::win::GetVersion() >= base::win::VERSION_XP) { | 173 runner.SetTestState(BEFORE_REVERT); |
| 174 runner.SetTestState(BEFORE_REVERT); | 174 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"PolicyTargetTest_token")); |
| 175 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"PolicyTargetTest_token")); | |
| 176 } | |
| 177 | 175 |
| 178 runner.SetTestState(AFTER_REVERT); | 176 runner.SetTestState(AFTER_REVERT); |
| 179 EXPECT_EQ(ERROR_NO_TOKEN, runner.RunTest(L"PolicyTargetTest_token")); | 177 EXPECT_EQ(ERROR_NO_TOKEN, runner.RunTest(L"PolicyTargetTest_token")); |
| 180 | 178 |
| 181 runner.SetTestState(EVERY_STATE); | 179 runner.SetTestState(EVERY_STATE); |
| 182 if (base::win::GetVersion() >= base::win::VERSION_XP) | 180 EXPECT_EQ(SBOX_TEST_FAILED, runner.RunTest(L"PolicyTargetTest_steal")); |
| 183 EXPECT_EQ(SBOX_TEST_FAILED, runner.RunTest(L"PolicyTargetTest_steal")); | |
| 184 } | 181 } |
| 185 | 182 |
| 186 TEST(PolicyTargetTest, OpenThreadToken) { | 183 TEST(PolicyTargetTest, OpenThreadToken) { |
| 187 TestRunner runner; | 184 TestRunner runner; |
| 188 if (base::win::GetVersion() >= base::win::VERSION_XP) { | 185 runner.SetTestState(BEFORE_REVERT); |
| 189 runner.SetTestState(BEFORE_REVERT); | 186 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"PolicyTargetTest_token2")); |
| 190 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"PolicyTargetTest_token2")); | |
| 191 } | |
| 192 | 187 |
| 193 runner.SetTestState(AFTER_REVERT); | 188 runner.SetTestState(AFTER_REVERT); |
| 194 EXPECT_EQ(ERROR_NO_TOKEN, runner.RunTest(L"PolicyTargetTest_token2")); | 189 EXPECT_EQ(ERROR_NO_TOKEN, runner.RunTest(L"PolicyTargetTest_token2")); |
| 195 } | 190 } |
| 196 | 191 |
| 197 TEST(PolicyTargetTest, OpenThreadTokenEx) { | 192 TEST(PolicyTargetTest, OpenThreadTokenEx) { |
| 198 TestRunner runner; | 193 TestRunner runner; |
| 199 if (base::win::GetVersion() < base::win::VERSION_XP) | |
| 200 return; | |
| 201 | 194 |
| 202 runner.SetTestState(BEFORE_REVERT); | 195 runner.SetTestState(BEFORE_REVERT); |
| 203 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"PolicyTargetTest_token3")); | 196 EXPECT_EQ(SBOX_TEST_SUCCEEDED, runner.RunTest(L"PolicyTargetTest_token3")); |
| 204 | 197 |
| 205 runner.SetTestState(AFTER_REVERT); | 198 runner.SetTestState(AFTER_REVERT); |
| 206 EXPECT_EQ(ERROR_NO_TOKEN, runner.RunTest(L"PolicyTargetTest_token3")); | 199 EXPECT_EQ(ERROR_NO_TOKEN, runner.RunTest(L"PolicyTargetTest_token3")); |
| 207 } | 200 } |
| 208 | 201 |
| 209 TEST(PolicyTargetTest, OpenThread) { | 202 TEST(PolicyTargetTest, OpenThread) { |
| 210 TestRunner runner; | 203 TestRunner runner; |
| (...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 349 | 342 |
| 350 // Close the desktop handle. | 343 // Close the desktop handle. |
| 351 temp_policy = broker->CreatePolicy(); | 344 temp_policy = broker->CreatePolicy(); |
| 352 temp_policy->DestroyAlternateDesktop(); | 345 temp_policy->DestroyAlternateDesktop(); |
| 353 temp_policy->Release(); | 346 temp_policy->Release(); |
| 354 } | 347 } |
| 355 | 348 |
| 356 // Launches the app in the sandbox and share a handle with it. The app should | 349 // Launches the app in the sandbox and share a handle with it. The app should |
| 357 // be able to use the handle. | 350 // be able to use the handle. |
| 358 TEST(PolicyTargetTest, ShareHandleTest) { | 351 TEST(PolicyTargetTest, ShareHandleTest) { |
| 359 // The way we share handles via STARTUPINFOEX does not work on XP. | |
| 360 if (base::win::GetVersion() < base::win::VERSION_VISTA) | |
| 361 return; | |
| 362 | 352 |
| 363 BrokerServices* broker = GetBroker(); | 353 BrokerServices* broker = GetBroker(); |
| 364 ASSERT_TRUE(broker != NULL); | 354 ASSERT_TRUE(broker != NULL); |
| 365 | 355 |
| 366 base::StringPiece contents = "Hello World"; | 356 base::StringPiece contents = "Hello World"; |
| 367 std::string name = "TestSharedMemory"; | 357 std::string name = "TestSharedMemory"; |
| 368 base::SharedMemoryCreateOptions options; | 358 base::SharedMemoryCreateOptions options; |
| 369 options.size = contents.size(); | 359 options.size = contents.size(); |
| 370 options.share_read_only = true; | 360 options.share_read_only = true; |
| 371 options.name_deprecated = &name; | 361 options.name_deprecated = &name; |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 408 | 398 |
| 409 EXPECT_EQ(static_cast<DWORD>(WAIT_TIMEOUT), | 399 EXPECT_EQ(static_cast<DWORD>(WAIT_TIMEOUT), |
| 410 ::WaitForSingleObject(target.process_handle(), 2000)); | 400 ::WaitForSingleObject(target.process_handle(), 2000)); |
| 411 | 401 |
| 412 EXPECT_TRUE(::TerminateProcess(target.process_handle(), 0)); | 402 EXPECT_TRUE(::TerminateProcess(target.process_handle(), 0)); |
| 413 | 403 |
| 414 ::WaitForSingleObject(target.process_handle(), INFINITE); | 404 ::WaitForSingleObject(target.process_handle(), INFINITE); |
| 415 } | 405 } |
| 416 | 406 |
| 417 } // namespace sandbox | 407 } // namespace sandbox |
| OLD | NEW |