Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1009)

Unified Diff: chrome/browser/chrome_elf_init_win.cc

Issue 272213006: Switching the no-finch default behavior to enable the blacklist (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Finch blacklist is now added to the hardcoded blacklist. Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/chrome_elf_init_win.h ('k') | chrome_elf/blacklist/blacklist.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chrome_elf_init_win.cc
diff --git a/chrome/browser/chrome_elf_init_win.cc b/chrome/browser/chrome_elf_init_win.cc
index 79465b8eef99940cdc21294cd3e76db0a5cd66c1..5e310a1a2cb17e580c50755817cf5f781c1390e5 100644
--- a/chrome/browser/chrome_elf_init_win.cc
+++ b/chrome/browser/chrome_elf_init_win.cc
@@ -12,13 +12,14 @@
#include "chrome_elf/blacklist/blacklist.h"
#include "chrome_elf/chrome_elf_constants.h"
#include "chrome_elf/dll_hash/dll_hash.h"
+#include "components/variations/variations_associated_data.h"
#include "content/public/browser/browser_thread.h"
#include "version.h" // NOLINT
-namespace {
-
const char kBrowserBlacklistTrialName[] = "BrowserBlacklist";
-const char kBrowserBlacklistTrialEnabledGroupName[] = "Enabled";
+const char kBrowserBlacklistTrialDisabledGroupName[] = "NoBlacklist";
+
+namespace {
// How long to wait, in seconds, before reporting for the second (and last
// time), what dlls were blocked from the browser process.
@@ -82,12 +83,13 @@ void ReportSuccessfulBlocks() {
void InitializeChromeElf() {
if (base::FieldTrialList::FindFullName(kBrowserBlacklistTrialName) ==
- kBrowserBlacklistTrialEnabledGroupName) {
- BrowserBlacklistBeaconSetup();
- } else {
+ kBrowserBlacklistTrialDisabledGroupName) {
// Disable the blacklist for all future runs by removing the beacon.
base::win::RegKey blacklist_registry_key(HKEY_CURRENT_USER);
blacklist_registry_key.DeleteKey(blacklist::kRegistryBeaconPath);
+ } else {
+ AddFinchBlacklistToRegistry();
+ BrowserBlacklistBeaconSetup();
}
// Report all successful blacklist interceptions.
@@ -103,6 +105,39 @@ void InitializeChromeElf() {
base::TimeDelta::FromSeconds(kBlacklistReportingDelaySec));
}
+void AddFinchBlacklistToRegistry() {
+ std::map<std::string, std::string> params;
+ if (chrome_variations::GetVariationParams(kBrowserBlacklistTrialName,
+ &params)) {
+ std::map<std::string, std::string>::iterator it = params.begin();
+ while (it != params.end()) {
+ base::win::RegKey finch_blacklist_registry_key(HKEY_CURRENT_USER,
+ blacklist::kRegistryFinchListPath,
+ KEY_QUERY_VALUE | KEY_SET_VALUE);
+
+ // No point in trying to continue if the registry key isn't valid.
+ if (!finch_blacklist_registry_key.Valid())
+ return;
+
+ // TODO: use ansi or utf8?
+ char* name_str = (it->first).c_str();
+ char* val_str = (it->second).c_str();
+ size_t name_len = MultiByteToWideChar(CP_UTF8, 0,name_str,-1, NULL, 0);
+ size_t val_len = MultiByteToWideChar(CP_UTF8, 0,val_str, -1, NULL, 0);
+ wchar_t* name = new wchar_t[name_len];
+ wchar_t* val = new wchar_t[val_len];
+ MultiByteToWideChar(CP_UTF8, 0, name_str, -1, name, name_len);
+ MultiByteToWideChar(CP_UTF8, 0, val_str, -1, value, val_len);
+ finch_blacklist_registry_key.WriteValue(name, val);
+
+ delete[] name;
+ delete[] val;
+
+ ++it;
+ }
+ }
+}
+
void BrowserBlacklistBeaconSetup() {
base::win::RegKey blacklist_registry_key(HKEY_CURRENT_USER,
blacklist::kRegistryBeaconPath,
« no previous file with comments | « chrome/browser/chrome_elf_init_win.h ('k') | chrome_elf/blacklist/blacklist.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698