| 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/tests/common/controller.h" | 5 #include "sandbox/tests/common/controller.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/sys_string_conversions.h" |
| 9 #include "base/win/windows_version.h" | 10 #include "base/win/windows_version.h" |
| 10 #include "sandbox/src/sandbox_factory.h" | 11 #include "sandbox/src/sandbox_factory.h" |
| 11 #include "sandbox/src/sandbox_utils.h" | 12 #include "sandbox/src/sandbox_utils.h" |
| 12 | 13 |
| 13 namespace { | 14 namespace { |
| 14 | 15 |
| 15 static const int kDefaultTimeout = 3000; | 16 static const int kDefaultTimeout = 3000; |
| 16 | 17 |
| 17 // Constructs a full path to a file inside the system32 folder. | 18 // Constructs a full path to a file inside the system32 folder. |
| 18 std::wstring MakePathToSys32(const wchar_t* name, bool is_obj_man_path) { | 19 std::wstring MakePathToSys32(const wchar_t* name, bool is_obj_man_path) { |
| (...skipping 235 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 254 if ((state <= MIN_STATE) || (state >= MAX_STATE)) | 255 if ((state <= MIN_STATE) || (state >= MAX_STATE)) |
| 255 return SBOX_TEST_INVALID_PARAMETER; | 256 return SBOX_TEST_INVALID_PARAMETER; |
| 256 | 257 |
| 257 HMODULE module; | 258 HMODULE module; |
| 258 if (!GetModuleHandleHelper(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | | 259 if (!GetModuleHandleHelper(GET_MODULE_HANDLE_EX_FLAG_FROM_ADDRESS | |
| 259 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, | 260 GET_MODULE_HANDLE_EX_FLAG_UNCHANGED_REFCOUNT, |
| 260 reinterpret_cast<wchar_t*>(&DispatchCall), | 261 reinterpret_cast<wchar_t*>(&DispatchCall), |
| 261 &module)) | 262 &module)) |
| 262 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 263 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
| 263 | 264 |
| 264 std::string command_name = WideToMultiByte(argv[3]); | 265 std::string command_name = base::SysWideToMultiByte(argv[3], CP_UTF8); |
| 265 CommandFunction command = reinterpret_cast<CommandFunction>( | 266 CommandFunction command = reinterpret_cast<CommandFunction>( |
| 266 ::GetProcAddress(module, command_name.c_str())); | 267 ::GetProcAddress(module, command_name.c_str())); |
| 267 if (!command) | 268 if (!command) |
| 268 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 269 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
| 269 | 270 |
| 270 if (BEFORE_INIT == state) | 271 if (BEFORE_INIT == state) |
| 271 return command(argc - 4, argv + 4); | 272 return command(argc - 4, argv + 4); |
| 272 else if (EVERY_STATE == state) | 273 else if (EVERY_STATE == state) |
| 273 command(argc - 4, argv + 4); | 274 command(argc - 4, argv + 4); |
| 274 | 275 |
| 275 TargetServices* target = SandboxFactory::GetTargetServices(); | 276 TargetServices* target = SandboxFactory::GetTargetServices(); |
| 276 if (!target) | 277 if (!target) |
| 277 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 278 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
| 278 | 279 |
| 279 if (SBOX_ALL_OK != target->Init()) | 280 if (SBOX_ALL_OK != target->Init()) |
| 280 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 281 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
| 281 | 282 |
| 282 if (BEFORE_REVERT == state) | 283 if (BEFORE_REVERT == state) |
| 283 return command(argc - 4, argv + 4); | 284 return command(argc - 4, argv + 4); |
| 284 else if (EVERY_STATE == state) | 285 else if (EVERY_STATE == state) |
| 285 command(argc - 4, argv + 4); | 286 command(argc - 4, argv + 4); |
| 286 | 287 |
| 287 target->LowerToken(); | 288 target->LowerToken(); |
| 288 return command(argc - 4, argv + 4); | 289 return command(argc - 4, argv + 4); |
| 289 } | 290 } |
| 290 | 291 |
| 291 } // namespace sandbox | 292 } // namespace sandbox |
| OLD | NEW |