| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/environment.h" | 5 #include "base/environment.h" |
| 6 #include "base/files/file_path.h" | 6 #include "base/files/file_path.h" |
| 7 #include "base/files/scoped_temp_dir.h" | 7 #include "base/files/scoped_temp_dir.h" |
| 8 #include "base/i18n/case_conversion.h" | 8 #include "base/i18n/case_conversion.h" |
| 9 #include "base/path_service.h" | 9 #include "base/path_service.h" |
| 10 #include "base/scoped_native_library.h" | 10 #include "base/scoped_native_library.h" |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 58 class BlacklistTest : public testing::Test { | 58 class BlacklistTest : public testing::Test { |
| 59 protected: | 59 protected: |
| 60 BlacklistTest() : override_manager_(), num_initially_blocked_(0) { | 60 BlacklistTest() : override_manager_(), num_initially_blocked_(0) { |
| 61 override_manager_.OverrideRegistry(HKEY_CURRENT_USER); | 61 override_manager_.OverrideRegistry(HKEY_CURRENT_USER); |
| 62 } | 62 } |
| 63 | 63 |
| 64 void CheckBlacklistedDllsNotLoaded() { | 64 void CheckBlacklistedDllsNotLoaded() { |
| 65 base::FilePath current_dir; | 65 base::FilePath current_dir; |
| 66 ASSERT_TRUE(PathService::Get(base::DIR_EXE, ¤t_dir)); | 66 ASSERT_TRUE(PathService::Get(base::DIR_EXE, ¤t_dir)); |
| 67 | 67 |
| 68 for (int i = 0; i < arraysize(test_data); ++i) { | 68 for (size_t i = 0; i < arraysize(test_data); ++i) { |
| 69 // Ensure that the dll has not been loaded both by inspecting the handle | 69 // Ensure that the dll has not been loaded both by inspecting the handle |
| 70 // returned by LoadLibrary and by looking for an environment variable that | 70 // returned by LoadLibrary and by looking for an environment variable that |
| 71 // is set when the DLL's entry point is called. | 71 // is set when the DLL's entry point is called. |
| 72 base::ScopedNativeLibrary dll_blacklisted( | 72 base::ScopedNativeLibrary dll_blacklisted( |
| 73 current_dir.Append(test_data[i].dll_name)); | 73 current_dir.Append(test_data[i].dll_name)); |
| 74 EXPECT_FALSE(dll_blacklisted.is_valid()); | 74 EXPECT_FALSE(dll_blacklisted.is_valid()); |
| 75 EXPECT_EQ(0u, ::GetEnvironmentVariable(test_data[i].dll_beacon, NULL, 0)); | 75 EXPECT_EQ(0u, ::GetEnvironmentVariable(test_data[i].dll_beacon, NULL, 0)); |
| 76 dll_blacklisted.Reset(NULL); | 76 dll_blacklisted.Reset(NULL); |
| 77 | 77 |
| 78 // Ensure that the dll is recorded as blocked. | 78 // Ensure that the dll is recorded as blocked. |
| (...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 226 // Test that an un-blacklisted DLL can load correctly. | 226 // Test that an un-blacklisted DLL can load correctly. |
| 227 base::ScopedNativeLibrary dll1(current_dir.Append(kTestDllName1)); | 227 base::ScopedNativeLibrary dll1(current_dir.Append(kTestDllName1)); |
| 228 EXPECT_TRUE(dll1.is_valid()); | 228 EXPECT_TRUE(dll1.is_valid()); |
| 229 dll1.Reset(NULL); | 229 dll1.Reset(NULL); |
| 230 | 230 |
| 231 int num_blocked_dlls = 0; | 231 int num_blocked_dlls = 0; |
| 232 TestDll_SuccessfullyBlocked(NULL, &num_blocked_dlls); | 232 TestDll_SuccessfullyBlocked(NULL, &num_blocked_dlls); |
| 233 EXPECT_EQ(num_initially_blocked_, num_blocked_dlls); | 233 EXPECT_EQ(num_initially_blocked_, num_blocked_dlls); |
| 234 | 234 |
| 235 // Add all DLLs to the blacklist then check they are blocked. | 235 // Add all DLLs to the blacklist then check they are blocked. |
| 236 for (int i = 0; i < arraysize(test_data); ++i) { | 236 for (size_t i = 0; i < arraysize(test_data); ++i) { |
| 237 EXPECT_TRUE(TestDll_AddDllToBlacklist(test_data[i].dll_name)); | 237 EXPECT_TRUE(TestDll_AddDllToBlacklist(test_data[i].dll_name)); |
| 238 } | 238 } |
| 239 CheckBlacklistedDllsNotLoaded(); | 239 CheckBlacklistedDllsNotLoaded(); |
| 240 } | 240 } |
| 241 | 241 |
| 242 TEST_F(BlacklistTest, AddDllsFromRegistryToBlacklist) { | 242 TEST_F(BlacklistTest, AddDllsFromRegistryToBlacklist) { |
| 243 // Ensure that the blacklist is loaded. | 243 // Ensure that the blacklist is loaded. |
| 244 ASSERT_TRUE(TestDll_IsBlacklistInitialized()); | 244 ASSERT_TRUE(TestDll_IsBlacklistInitialized()); |
| 245 | 245 |
| 246 // Delete the finch registry key to clear its values. | 246 // Delete the finch registry key to clear its values. |
| 247 base::win::RegKey key(HKEY_CURRENT_USER, | 247 base::win::RegKey key(HKEY_CURRENT_USER, |
| 248 blacklist::kRegistryFinchListPath, | 248 blacklist::kRegistryFinchListPath, |
| 249 KEY_QUERY_VALUE | KEY_SET_VALUE); | 249 KEY_QUERY_VALUE | KEY_SET_VALUE); |
| 250 key.DeleteKey(L""); | 250 key.DeleteKey(L""); |
| 251 | 251 |
| 252 // Add the test dlls to the registry (with their name as both key and value). | 252 // Add the test dlls to the registry (with their name as both key and value). |
| 253 base::win::RegKey finch_blacklist_registry_key( | 253 base::win::RegKey finch_blacklist_registry_key( |
| 254 HKEY_CURRENT_USER, | 254 HKEY_CURRENT_USER, |
| 255 blacklist::kRegistryFinchListPath, | 255 blacklist::kRegistryFinchListPath, |
| 256 KEY_QUERY_VALUE | KEY_SET_VALUE); | 256 KEY_QUERY_VALUE | KEY_SET_VALUE); |
| 257 for (int i = 0; i < arraysize(test_data); ++i) { | 257 for (size_t i = 0; i < arraysize(test_data); ++i) { |
| 258 finch_blacklist_registry_key.WriteValue(test_data[i].dll_name, | 258 finch_blacklist_registry_key.WriteValue(test_data[i].dll_name, |
| 259 test_data[i].dll_name); | 259 test_data[i].dll_name); |
| 260 } | 260 } |
| 261 | 261 |
| 262 TestDll_AddDllsFromRegistryToBlacklist(); | 262 TestDll_AddDllsFromRegistryToBlacklist(); |
| 263 CheckBlacklistedDllsNotLoaded(); | 263 CheckBlacklistedDllsNotLoaded(); |
| 264 } | 264 } |
| 265 | 265 |
| 266 void TestResetBeacon(scoped_ptr<base::win::RegKey>& key, | 266 void TestResetBeacon(scoped_ptr<base::win::RegKey>& key, |
| 267 DWORD input_state, | 267 DWORD input_state, |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 336 &blacklist_state); | 336 &blacklist_state); |
| 337 EXPECT_EQ(blacklist_state, blacklist::BLACKLIST_SETUP_RUNNING); | 337 EXPECT_EQ(blacklist_state, blacklist::BLACKLIST_SETUP_RUNNING); |
| 338 | 338 |
| 339 DWORD attempt_count = blacklist::kBeaconMaxAttempts; | 339 DWORD attempt_count = blacklist::kBeaconMaxAttempts; |
| 340 blacklist_registry_key_->ReadValueDW(blacklist::kBeaconAttemptCount, | 340 blacklist_registry_key_->ReadValueDW(blacklist::kBeaconAttemptCount, |
| 341 &attempt_count); | 341 &attempt_count); |
| 342 EXPECT_EQ(static_cast<DWORD>(0), attempt_count); | 342 EXPECT_EQ(static_cast<DWORD>(0), attempt_count); |
| 343 } | 343 } |
| 344 | 344 |
| 345 } // namespace | 345 } // namespace |
| OLD | NEW |