| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "chrome/browser/safe_browsing/incident_reporting/environment_data_colle
ction_win.h" | 5 #include "chrome/browser/safe_browsing/incident_reporting/environment_data_colle
ction_win.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <string> | 8 #include <string> |
| 9 | 9 |
| 10 #include "base/base_paths.h" | 10 #include "base/base_paths.h" |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 186 GetProcAddress(module_handle, kTestExportName)); | 186 GetProcAddress(module_handle, kTestExportName)); |
| 187 ASSERT_NE(reinterpret_cast<uint8_t*>(NULL), export_addr); | 187 ASSERT_NE(reinterpret_cast<uint8_t*>(NULL), export_addr); |
| 188 | 188 |
| 189 uint8_t new_val = (*export_addr) + 1; | 189 uint8_t new_val = (*export_addr) + 1; |
| 190 SIZE_T bytes_written = 0; | 190 SIZE_T bytes_written = 0; |
| 191 WriteProcessMemory(GetCurrentProcess(), | 191 WriteProcessMemory(GetCurrentProcess(), |
| 192 export_addr, | 192 export_addr, |
| 193 reinterpret_cast<void*>(&new_val), | 193 reinterpret_cast<void*>(&new_val), |
| 194 1, | 194 1, |
| 195 &bytes_written); | 195 &bytes_written); |
| 196 ASSERT_EQ(1, bytes_written); | 196 ASSERT_EQ(1u, bytes_written); |
| 197 | 197 |
| 198 ClientIncidentReport_EnvironmentData_Process process_report; | 198 ClientIncidentReport_EnvironmentData_Process process_report; |
| 199 CollectModuleVerificationData(kTestDllNames, kTestDllNamesCount, | 199 CollectModuleVerificationData(kTestDllNames, kTestDllNamesCount, |
| 200 &process_report); | 200 &process_report); |
| 201 | 201 |
| 202 // CollectModuleVerificationData should return the single modified module and | 202 // CollectModuleVerificationData should return the single modified module and |
| 203 // its modified export. The other module, being unmodified, is omitted from | 203 // its modified export. The other module, being unmodified, is omitted from |
| 204 // the returned list of modules. | 204 // the returned list of modules. |
| 205 // AddressSanitizer build is special though, as it patches the code at | 205 // AddressSanitizer build is special though, as it patches the code at |
| 206 // startup, which makes every single module modified and introduces extra | 206 // startup, which makes every single module modified and introduces extra |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 251 const wchar_t kDWORDValueName[] = L"DWORDValue"; | 251 const wchar_t kDWORDValueName[] = L"DWORDValue"; |
| 252 const wchar_t kStringData[] = L"string data"; | 252 const wchar_t kStringData[] = L"string data"; |
| 253 const DWORD kDWORDData = 0xdeadbeef; | 253 const DWORD kDWORDData = 0xdeadbeef; |
| 254 | 254 |
| 255 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kStringValueName, kStringData)); | 255 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kStringValueName, kStringData)); |
| 256 | 256 |
| 257 registry_data_pb.Clear(); | 257 registry_data_pb.Clear(); |
| 258 CollectRegistryData(kRegKeysToCollect, 1, ®istry_data_pb); | 258 CollectRegistryData(kRegKeysToCollect, 1, ®istry_data_pb); |
| 259 | 259 |
| 260 // Expect 1 registry key, 1 value. | 260 // Expect 1 registry key, 1 value. |
| 261 EXPECT_EQ(1U, registry_data_pb.size()); | 261 EXPECT_EQ(1, registry_data_pb.size()); |
| 262 EXPECT_EQ("HKEY_CURRENT_USER\\Software\\TestKey", | 262 EXPECT_EQ("HKEY_CURRENT_USER\\Software\\TestKey", |
| 263 registry_data_pb.Get(0).name()); | 263 registry_data_pb.Get(0).name()); |
| 264 EXPECT_EQ(1U, registry_data_pb.Get(0).value_size()); | 264 EXPECT_EQ(1, registry_data_pb.Get(0).value_size()); |
| 265 EXPECT_EQ(base::WideToUTF8(kStringValueName), | 265 EXPECT_EQ(base::WideToUTF8(kStringValueName), |
| 266 registry_data_pb.Get(0).value(0).name()); | 266 registry_data_pb.Get(0).value(0).name()); |
| 267 EXPECT_EQ(REG_SZ, registry_data_pb.Get(0).value(0).type()); | 267 EXPECT_EQ(static_cast<uint32_t>(REG_SZ), |
| 268 registry_data_pb.Get(0).value(0).type()); |
| 268 const char* value_data = registry_data_pb.Get(0).value(0).data().c_str(); | 269 const char* value_data = registry_data_pb.Get(0).value(0).data().c_str(); |
| 269 EXPECT_EQ(kStringData, | 270 EXPECT_EQ(kStringData, |
| 270 std::wstring(reinterpret_cast<const wchar_t*>(&value_data[0]))); | 271 std::wstring(reinterpret_cast<const wchar_t*>(&value_data[0]))); |
| 271 | 272 |
| 272 // Add another value. | 273 // Add another value. |
| 273 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kDWORDValueName, kDWORDData)); | 274 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kDWORDValueName, kDWORDData)); |
| 274 | 275 |
| 275 registry_data_pb.Clear(); | 276 registry_data_pb.Clear(); |
| 276 CollectRegistryData(kRegKeysToCollect, 1, ®istry_data_pb); | 277 CollectRegistryData(kRegKeysToCollect, 1, ®istry_data_pb); |
| 277 | 278 |
| 278 // Expect 1 registry key, 2 values. | 279 // Expect 1 registry key, 2 values. |
| 279 EXPECT_EQ(1U, registry_data_pb.size()); | 280 EXPECT_EQ(1, registry_data_pb.size()); |
| 280 EXPECT_EQ(2U, registry_data_pb.Get(0).value_size()); | 281 EXPECT_EQ(2, registry_data_pb.Get(0).value_size()); |
| 281 | 282 |
| 282 // Add a subkey. | 283 // Add a subkey. |
| 283 const wchar_t kTestValueName[] = L"TestValue"; | 284 const wchar_t kTestValueName[] = L"TestValue"; |
| 284 const wchar_t kTestData[] = L"test data"; | 285 const wchar_t kTestData[] = L"test data"; |
| 285 | 286 |
| 286 ASSERT_EQ(ERROR_SUCCESS, key.CreateKey(kSubKey, KEY_READ)); | 287 ASSERT_EQ(ERROR_SUCCESS, key.CreateKey(kSubKey, KEY_READ)); |
| 287 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, kRootKey, KEY_READ)); | 288 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, kRootKey, KEY_READ)); |
| 288 ASSERT_EQ(ERROR_SUCCESS, key.OpenKey(kSubKey, KEY_READ | KEY_SET_VALUE)); | 289 ASSERT_EQ(ERROR_SUCCESS, key.OpenKey(kSubKey, KEY_READ | KEY_SET_VALUE)); |
| 289 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kTestValueName, kTestData)); | 290 ASSERT_EQ(ERROR_SUCCESS, key.WriteValue(kTestValueName, kTestData)); |
| 290 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, kRootKey, KEY_READ)); | 291 ASSERT_EQ(ERROR_SUCCESS, key.Open(HKEY_CURRENT_USER, kRootKey, KEY_READ)); |
| 291 | 292 |
| 292 registry_data_pb.Clear(); | 293 registry_data_pb.Clear(); |
| 293 CollectRegistryData(kRegKeysToCollect, 1, ®istry_data_pb); | 294 CollectRegistryData(kRegKeysToCollect, 1, ®istry_data_pb); |
| 294 | 295 |
| 295 // Expect 1 subkey, 1 value. | 296 // Expect 1 subkey, 1 value. |
| 296 EXPECT_EQ(1U, registry_data_pb.Get(0).key_size()); | 297 EXPECT_EQ(1, registry_data_pb.Get(0).key_size()); |
| 297 const ClientIncidentReport_EnvironmentData_OS_RegistryKey& subkey_pb = | 298 const ClientIncidentReport_EnvironmentData_OS_RegistryKey& subkey_pb = |
| 298 registry_data_pb.Get(0).key(0); | 299 registry_data_pb.Get(0).key(0); |
| 299 EXPECT_EQ(base::WideToUTF8(kSubKey), subkey_pb.name()); | 300 EXPECT_EQ(base::WideToUTF8(kSubKey), subkey_pb.name()); |
| 300 EXPECT_EQ(1U, subkey_pb.value_size()); | 301 EXPECT_EQ(1, subkey_pb.value_size()); |
| 301 EXPECT_EQ(base::WideToUTF8(kTestValueName), subkey_pb.value(0).name()); | 302 EXPECT_EQ(base::WideToUTF8(kTestValueName), subkey_pb.value(0).name()); |
| 302 value_data = subkey_pb.value(0).data().c_str(); | 303 value_data = subkey_pb.value(0).data().c_str(); |
| 303 EXPECT_EQ(kTestData, | 304 EXPECT_EQ(kTestData, |
| 304 std::wstring(reinterpret_cast<const wchar_t*>(&value_data[0]))); | 305 std::wstring(reinterpret_cast<const wchar_t*>(&value_data[0]))); |
| 305 EXPECT_EQ(REG_SZ, subkey_pb.value(0).type()); | 306 EXPECT_EQ(static_cast<uint32_t>(REG_SZ), subkey_pb.value(0).type()); |
| 306 } | 307 } |
| 307 | 308 |
| 308 TEST(SafeBrowsingEnvironmentDataCollectionWinTest, | 309 TEST(SafeBrowsingEnvironmentDataCollectionWinTest, |
| 309 CollectDomainEnrollmentData) { | 310 CollectDomainEnrollmentData) { |
| 310 // The test may or may not be running on a domain-enrolled machine, so all we | 311 // The test may or may not be running on a domain-enrolled machine, so all we |
| 311 // can check is that some value is filled in. | 312 // can check is that some value is filled in. |
| 312 ClientIncidentReport_EnvironmentData_OS os_data; | 313 ClientIncidentReport_EnvironmentData_OS os_data; |
| 313 CollectDomainEnrollmentData(&os_data); | 314 CollectDomainEnrollmentData(&os_data); |
| 314 EXPECT_TRUE(os_data.has_is_enrolled_to_domain()); | 315 EXPECT_TRUE(os_data.has_is_enrolled_to_domain()); |
| 315 } | 316 } |
| 316 | 317 |
| 317 } // namespace safe_browsing | 318 } // namespace safe_browsing |
| OLD | NEW |