diff options
-rw-r--r-- | chrome/browser/DEPS | 2 | ||||
-rw-r--r-- | chrome/browser/chrome_elf_init_unittest_win.cc | 2 | ||||
-rw-r--r-- | chrome/browser/chrome_elf_init_win.cc | 6 | ||||
-rw-r--r-- | chrome/chrome_browser.gypi | 3 | ||||
-rw-r--r-- | chrome/renderer/chrome_content_renderer_client.cc | 7 | ||||
-rw-r--r-- | chrome_elf/blacklist.gypi | 1 | ||||
-rw-r--r-- | chrome_elf/blacklist/blacklist.cc | 5 | ||||
-rw-r--r-- | chrome_elf/blacklist/blacklist.h | 24 | ||||
-rw-r--r-- | chrome_elf/blacklist/test/blacklist_test.cc | 1 | ||||
-rw-r--r-- | chrome_elf/chrome_elf.gyp | 23 | ||||
-rw-r--r-- | chrome_elf/chrome_elf_constants.cc | 7 | ||||
-rw-r--r-- | chrome_elf/chrome_elf_constants.h | 28 |
12 files changed, 70 insertions, 39 deletions
diff --git a/chrome/browser/DEPS b/chrome/browser/DEPS index 9b4ece3..313c8ce 100644 --- a/chrome/browser/DEPS +++ b/chrome/browser/DEPS @@ -3,7 +3,7 @@ include_rules = [ "+ash", "+chrome/app", "+chrome/installer", - "+chrome_elf/blacklist", + "+chrome_elf/chrome_elf_constants.h", "+chrome_elf/create_file", "+chromeos", "+components/autofill/content/browser", diff --git a/chrome/browser/chrome_elf_init_unittest_win.cc b/chrome/browser/chrome_elf_init_unittest_win.cc index 2cf68b4..513b96b 100644 --- a/chrome/browser/chrome_elf_init_unittest_win.cc +++ b/chrome/browser/chrome_elf_init_unittest_win.cc @@ -9,7 +9,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/test/test_reg_util_win.h" #include "chrome/common/chrome_version_info.h" -#include "chrome_elf/blacklist/blacklist.h" +#include "chrome_elf/chrome_elf_constants.h" #include "testing/gtest/include/gtest/gtest.h" class ChromeBlacklistTrialTest : public testing::Test { diff --git a/chrome/browser/chrome_elf_init_win.cc b/chrome/browser/chrome_elf_init_win.cc index 424f533..aa74c46 100644 --- a/chrome/browser/chrome_elf_init_win.cc +++ b/chrome/browser/chrome_elf_init_win.cc @@ -7,7 +7,7 @@ #include "base/strings/utf_string_conversions.h" #include "base/win/registry.h" #include "chrome/browser/chrome_elf_init_win.h" -#include "chrome_elf/blacklist/blacklist.h" +#include "chrome_elf/chrome_elf_constants.h" #include "version.h" // NOLINT namespace { @@ -64,6 +64,10 @@ void BrowserBlacklistBeaconSetup() { blacklist::kRegistryBeaconPath, KEY_QUERY_VALUE | KEY_SET_VALUE); + // No point in trying to continue if the registry key isn't valid. + if (!blacklist_registry_key.Valid()) + return; + // Find the last recorded blacklist version. base::string16 blacklist_version; blacklist_registry_key.ReadValue(blacklist::kBeaconVersion, diff --git a/chrome/chrome_browser.gypi b/chrome/chrome_browser.gypi index d9c5329..f70568f 100644 --- a/chrome/chrome_browser.gypi +++ b/chrome/chrome_browser.gypi @@ -3399,7 +3399,8 @@ 'chrome_process_finder', 'installer_util_strings', '../chrome/chrome.gyp:chrome_version_header', - '../chrome_elf/chrome_elf.gyp:blacklist', + '../chrome_elf/chrome_elf.gyp:chrome_elf', + '../chrome_elf/chrome_elf.gyp:chrome_elf_constants', '../google_update/google_update.gyp:google_update', '../third_party/iaccessible2/iaccessible2.gyp:iaccessible2', '../third_party/isimpledom/isimpledom.gyp:isimpledom', diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc index 1ab1cc4..e0a237b 100644 --- a/chrome/renderer/chrome_content_renderer_client.cc +++ b/chrome/renderer/chrome_content_renderer_client.cc @@ -365,12 +365,7 @@ void ChromeContentRendererClient::RenderThreadStarted() { // Report if the renderer process has been patched by chrome_elf. // TODO(csharp): Remove once the renderer is no longer getting // patched this way. - typedef bool(*IsBlacklistInitializedFunc)(); - IsBlacklistInitializedFunc is_blacklist_initialized = - reinterpret_cast<IsBlacklistInitializedFunc>( - GetProcAddress(GetModuleHandle(L"chrome_elf.dll"), - "IsBlacklistInitialized")); - if (is_blacklist_initialized && is_blacklist_initialized()) + if (blacklist::IsBlacklistInitialized()) UMA_HISTOGRAM_BOOLEAN("Blacklist.PatchedInRenderer", true); #endif } diff --git a/chrome_elf/blacklist.gypi b/chrome_elf/blacklist.gypi index 24fcec6..86c97c9 100644 --- a/chrome_elf/blacklist.gypi +++ b/chrome_elf/blacklist.gypi @@ -23,6 +23,7 @@ '../base/base.gyp:base_static', '../chrome/chrome.gyp:chrome_version_header', '../chrome_elf/chrome_elf.gyp:chrome_elf_breakpad', + '../chrome_elf/chrome_elf.gyp:chrome_elf_constants', '../sandbox/sandbox.gyp:sandbox', ], }, diff --git a/chrome_elf/blacklist/blacklist.cc b/chrome_elf/blacklist/blacklist.cc index 958d710..73383d5 100644 --- a/chrome_elf/blacklist/blacklist.cc +++ b/chrome_elf/blacklist/blacklist.cc @@ -8,6 +8,7 @@ #include "base/basictypes.h" #include "chrome_elf/blacklist/blacklist_interceptions.h" +#include "chrome_elf/chrome_elf_constants.h" #include "sandbox/win/src/interception_internal.h" #include "sandbox/win/src/internal_types.h" #include "sandbox/win/src/sandbox_utils.h" @@ -28,10 +29,6 @@ const wchar_t* g_troublesome_dlls[kTroublesomeDllsMaxCount] = { NULL, }; -const wchar_t kRegistryBeaconPath[] = L"SOFTWARE\\Google\\Chrome\\BLBeacon"; -const wchar_t kBeaconVersion[] = L"version"; -const wchar_t kBeaconState[] = L"state"; - } // namespace blacklist // Allocate storage for thunks in a page of this module to save on doing diff --git a/chrome_elf/blacklist/blacklist.h b/chrome_elf/blacklist/blacklist.h index 2e21f20..779525f 100644 --- a/chrome_elf/blacklist/blacklist.h +++ b/chrome_elf/blacklist/blacklist.h @@ -17,30 +17,6 @@ const int kTroublesomeDllsMaxCount = 64; // The DLL blacklist. extern const wchar_t* g_troublesome_dlls[kTroublesomeDllsMaxCount]; -// The registry path of the blacklist beacon. -extern const wchar_t kRegistryBeaconPath[]; - -// The properties for the blacklist beacon. -extern const wchar_t kBeaconVersion[]; -extern const wchar_t kBeaconState[]; - -// The states for the blacklist setup code. -enum BlacklistState { - BLACKLIST_DISABLED = 0, - BLACKLIST_ENABLED, - // The blacklist setup code is running. If this is still set at startup, - // it means the last setup crashed. - BLACKLIST_SETUP_RUNNING, - // The blacklist thunk setup code is running. If this is still set at startup, - // it means the last setup crashed during thunk setup. - BLACKLIST_THUNK_SETUP, - // The blacklist code is currently intercepting MapViewOfSection. If this is - // still set at startup, it means we crashed during interception. - BLACKLIST_INTERCEPTING, - // Always keep this at the end. - BLACKLIST_STATE_MAX, -}; - #if defined(_WIN64) extern NtMapViewOfSectionFunction g_nt_map_view_of_section_func; #endif diff --git a/chrome_elf/blacklist/test/blacklist_test.cc b/chrome_elf/blacklist/test/blacklist_test.cc index 39db737..096502d 100644 --- a/chrome_elf/blacklist/test/blacklist_test.cc +++ b/chrome_elf/blacklist/test/blacklist_test.cc @@ -15,6 +15,7 @@ #include "base/win/registry.h" #include "chrome_elf/blacklist/blacklist.h" #include "chrome_elf/blacklist/test/blacklist_test_main_dll.h" +#include "chrome_elf/chrome_elf_constants.h" #include "testing/gtest/include/gtest/gtest.h" #include "version.h" // NOLINT diff --git a/chrome_elf/chrome_elf.gyp b/chrome_elf/chrome_elf.gyp index fa6ed36..5820fc2 100644 --- a/chrome_elf/chrome_elf.gyp +++ b/chrome_elf/chrome_elf.gyp @@ -126,7 +126,7 @@ ], }, { - 'target_name': 'chrome_elf_common', + 'target_name': 'chrome_elf_constants', 'type': 'static_library', 'include_dirs': [ '..', @@ -134,6 +134,27 @@ 'sources': [ 'chrome_elf_constants.cc', 'chrome_elf_constants.h', + ], + 'conditions': [ + ['component=="shared_library"', { + # In component builds, all targets depend on chrome_redirects by + # default. Remove it here so we are able to test it. + 'dependencies!': [ + '../chrome_elf/chrome_elf.gyp:chrome_redirects', + ], + }], + ], + }, + { + 'target_name': 'chrome_elf_common', + 'type': 'static_library', + 'dependencies': [ + 'chrome_elf_constants', + ], + 'include_dirs': [ + '..', + ], + 'sources': [ 'chrome_elf_types.h', 'chrome_elf_util.cc', 'chrome_elf_util.h', diff --git a/chrome_elf/chrome_elf_constants.cc b/chrome_elf/chrome_elf_constants.cc index cd60763..8879da7 100644 --- a/chrome_elf/chrome_elf_constants.cc +++ b/chrome_elf/chrome_elf_constants.cc @@ -14,3 +14,10 @@ const wchar_t kLocalStateFilename[] = L"Local State"; const wchar_t kPreferencesFilename[] = L"Preferences"; const wchar_t kUserDataDirName[] = L"User Data"; +namespace blacklist { + +const wchar_t kRegistryBeaconPath[] = L"SOFTWARE\\Google\\Chrome\\BLBeacon"; +const wchar_t kBeaconVersion[] = L"version"; +const wchar_t kBeaconState[] = L"state"; + +} // namespace blacklist diff --git a/chrome_elf/chrome_elf_constants.h b/chrome_elf/chrome_elf_constants.h index fcfbc25..2941815 100644 --- a/chrome_elf/chrome_elf_constants.h +++ b/chrome_elf/chrome_elf_constants.h @@ -14,4 +14,32 @@ extern const wchar_t kLocalStateFilename[]; extern const wchar_t kPreferencesFilename[]; extern const wchar_t kUserDataDirName[]; +namespace blacklist { + +// The registry path of the blacklist beacon. +extern const wchar_t kRegistryBeaconPath[]; + +// The properties for the blacklist beacon. +extern const wchar_t kBeaconVersion[]; +extern const wchar_t kBeaconState[]; + +// The states for the blacklist setup code. +enum BlacklistState { + BLACKLIST_DISABLED = 0, + BLACKLIST_ENABLED, + // The blacklist setup code is running. If this is still set at startup, + // it means the last setup crashed. + BLACKLIST_SETUP_RUNNING, + // The blacklist thunk setup code is running. If this is still set at startup, + // it means the last setup crashed during thunk setup. + BLACKLIST_THUNK_SETUP, + // The blacklist code is currently intercepting MapViewOfSection. If this is + // still set at startup, it means we crashed during interception. + BLACKLIST_INTERCEPTING, + // Always keep this at the end. + BLACKLIST_STATE_MAX, +}; + +} // namespace blacklist + #endif // CHROME_ELF_CHROME_ELF_CONSTANTS_H_ |