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 <windows.h> | 5 #include <windows.h> |
6 #include <string> | 6 #include <string> |
7 | 7 |
8 #include "sandbox/win/tests/validation_tests/commands.h" | 8 #include "sandbox/win/tests/validation_tests/commands.h" |
9 | 9 |
10 #include "sandbox/win/tests/common/controller.h" | 10 #include "sandbox/win/tests/common/controller.h" |
11 | 11 |
12 namespace { | 12 namespace { |
13 | 13 |
14 // Returns the HKEY corresponding to name. If there is no HKEY corresponding | 14 // Returns the HKEY corresponding to name. If there is no HKEY corresponding |
15 // to the name it returns NULL. | 15 // to the name it returns NULL. |
16 HKEY GetHKEYFromString(const std::wstring &name) { | 16 HKEY GetHKEYFromString(const base::string16 &name) { |
17 if (L"HKLM" == name) | 17 if (L"HKLM" == name) |
18 return HKEY_LOCAL_MACHINE; | 18 return HKEY_LOCAL_MACHINE; |
19 else if (L"HKCR" == name) | 19 else if (L"HKCR" == name) |
20 return HKEY_CLASSES_ROOT; | 20 return HKEY_CLASSES_ROOT; |
21 else if (L"HKCC" == name) | 21 else if (L"HKCC" == name) |
22 return HKEY_CURRENT_CONFIG; | 22 return HKEY_CURRENT_CONFIG; |
23 else if (L"HKCU" == name) | 23 else if (L"HKCU" == name) |
24 return HKEY_CURRENT_USER; | 24 return HKEY_CURRENT_USER; |
25 else if (L"HKU" == name) | 25 else if (L"HKU" == name) |
26 return HKEY_USERS; | 26 return HKEY_USERS; |
27 | 27 |
28 return NULL; | 28 return NULL; |
29 } | 29 } |
30 | 30 |
31 // Modifies string to remove the leading and trailing quotes. | 31 // Modifies string to remove the leading and trailing quotes. |
32 void trim_quote(std::wstring* string) { | 32 void trim_quote(base::string16* string) { |
33 std::wstring::size_type pos1 = string->find_first_not_of(L'"'); | 33 base::string16::size_type pos1 = string->find_first_not_of(L'"'); |
34 std::wstring::size_type pos2 = string->find_last_not_of(L'"'); | 34 base::string16::size_type pos2 = string->find_last_not_of(L'"'); |
35 | 35 |
36 if (std::wstring::npos == pos1 || std::wstring::npos == pos2) | 36 if (base::string16::npos == pos1 || base::string16::npos == pos2) |
37 (*string) = L""; | 37 (*string) = L""; |
38 else | 38 else |
39 (*string) = string->substr(pos1, pos2 + 1); | 39 (*string) = string->substr(pos1, pos2 + 1); |
40 } | 40 } |
41 | 41 |
42 int TestOpenFile(std::wstring path, bool for_write) { | 42 int TestOpenFile(base::string16 path, bool for_write) { |
43 wchar_t path_expanded[MAX_PATH + 1] = {0}; | 43 wchar_t path_expanded[MAX_PATH + 1] = {0}; |
44 DWORD size = ::ExpandEnvironmentStrings(path.c_str(), path_expanded, | 44 DWORD size = ::ExpandEnvironmentStrings(path.c_str(), path_expanded, |
45 MAX_PATH); | 45 MAX_PATH); |
46 if (!size) | 46 if (!size) |
47 return sandbox::SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 47 return sandbox::SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
48 | 48 |
49 HANDLE file; | 49 HANDLE file; |
50 file = ::CreateFile(path_expanded, | 50 file = ::CreateFile(path_expanded, |
51 for_write ? GENERIC_READ | GENERIC_WRITE : GENERIC_READ, | 51 for_write ? GENERIC_READ | GENERIC_WRITE : GENERIC_READ, |
52 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, | 52 FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE, |
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
135 } else { | 135 } else { |
136 ::CloseHandle(thread); | 136 ::CloseHandle(thread); |
137 return SBOX_TEST_SUCCEEDED; | 137 return SBOX_TEST_SUCCEEDED; |
138 } | 138 } |
139 } | 139 } |
140 | 140 |
141 SBOX_TESTS_COMMAND int OpenFile(int argc, wchar_t **argv) { | 141 SBOX_TESTS_COMMAND int OpenFile(int argc, wchar_t **argv) { |
142 if (1 != argc) | 142 if (1 != argc) |
143 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 143 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
144 | 144 |
145 std::wstring path = argv[0]; | 145 base::string16 path = argv[0]; |
146 trim_quote(&path); | 146 trim_quote(&path); |
147 | 147 |
148 return TestOpenReadFile(path); | 148 return TestOpenReadFile(path); |
149 } | 149 } |
150 | 150 |
151 int TestOpenReadFile(const std::wstring& path) { | 151 int TestOpenReadFile(const base::string16& path) { |
152 return TestOpenFile(path, false); | 152 return TestOpenFile(path, false); |
153 } | 153 } |
154 | 154 |
155 int TestOpenWriteFile(int argc, wchar_t **argv) { | 155 int TestOpenWriteFile(int argc, wchar_t **argv) { |
156 if (1 != argc) | 156 if (1 != argc) |
157 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 157 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
158 | 158 |
159 std::wstring path = argv[0]; | 159 base::string16 path = argv[0]; |
160 trim_quote(&path); | 160 trim_quote(&path); |
161 | 161 |
162 return TestOpenWriteFile(path); | 162 return TestOpenWriteFile(path); |
163 } | 163 } |
164 | 164 |
165 int TestOpenWriteFile(const std::wstring& path) { | 165 int TestOpenWriteFile(const base::string16& path) { |
166 return TestOpenFile(path, true); | 166 return TestOpenFile(path, true); |
167 } | 167 } |
168 | 168 |
169 SBOX_TESTS_COMMAND int OpenKey(int argc, wchar_t **argv) { | 169 SBOX_TESTS_COMMAND int OpenKey(int argc, wchar_t **argv) { |
170 if (0 == argc || argc > 2) | 170 if (0 == argc || argc > 2) |
171 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 171 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
172 | 172 |
173 // Get the hive. | 173 // Get the hive. |
174 HKEY base_key = GetHKEYFromString(argv[0]); | 174 HKEY base_key = GetHKEYFromString(argv[0]); |
175 | 175 |
176 // Get the subkey. | 176 // Get the subkey. |
177 std::wstring subkey; | 177 base::string16 subkey; |
178 if (2 == argc) { | 178 if (2 == argc) { |
179 subkey = argv[1]; | 179 subkey = argv[1]; |
180 trim_quote(&subkey); | 180 trim_quote(&subkey); |
181 } | 181 } |
182 | 182 |
183 return TestOpenKey(base_key, subkey); | 183 return TestOpenKey(base_key, subkey); |
184 } | 184 } |
185 | 185 |
186 int TestOpenKey(HKEY base_key, std::wstring subkey) { | 186 int TestOpenKey(HKEY base_key, base::string16 subkey) { |
187 HKEY key; | 187 HKEY key; |
188 LONG err_code = ::RegOpenKeyEx(base_key, | 188 LONG err_code = ::RegOpenKeyEx(base_key, |
189 subkey.c_str(), | 189 subkey.c_str(), |
190 0, // Reserved, must be 0. | 190 0, // Reserved, must be 0. |
191 MAXIMUM_ALLOWED, | 191 MAXIMUM_ALLOWED, |
192 &key); | 192 &key); |
193 if (ERROR_SUCCESS == err_code) { | 193 if (ERROR_SUCCESS == err_code) { |
194 ::RegCloseKey(key); | 194 ::RegCloseKey(key); |
195 return SBOX_TEST_SUCCEEDED; | 195 return SBOX_TEST_SUCCEEDED; |
196 } else if (ERROR_INVALID_HANDLE == err_code || | 196 } else if (ERROR_INVALID_HANDLE == err_code || |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
253 SBOX_TESTS_COMMAND int SleepCmd(int argc, wchar_t **argv) { | 253 SBOX_TESTS_COMMAND int SleepCmd(int argc, wchar_t **argv) { |
254 if (1 != argc) | 254 if (1 != argc) |
255 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; | 255 return SBOX_TEST_FAILED_TO_EXECUTE_COMMAND; |
256 | 256 |
257 ::Sleep(_wtoi(argv[0])); | 257 ::Sleep(_wtoi(argv[0])); |
258 return SBOX_TEST_SUCCEEDED; | 258 return SBOX_TEST_SUCCEEDED; |
259 } | 259 } |
260 | 260 |
261 | 261 |
262 } // namespace sandbox | 262 } // namespace sandbox |
OLD | NEW |