summaryrefslogtreecommitdiffstats
path: root/chrome/browser/enumerate_modules_model_win.cc
diff options
context:
space:
mode:
authorfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-08 12:03:50 +0000
committerfinnur@chromium.org <finnur@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-08 12:03:50 +0000
commitcfc23434779a43f4d67c560487cd2d8915e95d8e (patch)
tree401bc0184aac15e06b4449fe866b1ae578189b16 /chrome/browser/enumerate_modules_model_win.cc
parentc3a536ce2527b3d0616e0440704aa2dc5c73f43e (diff)
downloadchromium_src-cfc23434779a43f4d67c560487cd2d8915e95d8e.zip
chromium_src-cfc23434779a43f4d67c560487cd2d8915e95d8e.tar.gz
chromium_src-cfc23434779a43f4d67c560487cd2d8915e95d8e.tar.bz2
After reviewing the frequency list for 3rd party crashers there are a few
new items to add to the about:conflicts list. Also changed it so that the conflicts badge gets removed once you open the wrench menu. BUG=67897 TEST=Please contact me for details, it is a bit involved. Review URL: http://codereview.chromium.org/6804011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80923 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/enumerate_modules_model_win.cc')
-rw-r--r--chrome/browser/enumerate_modules_model_win.cc79
1 files changed, 68 insertions, 11 deletions
diff --git a/chrome/browser/enumerate_modules_model_win.cc b/chrome/browser/enumerate_modules_model_win.cc
index f1ac462..7119494 100644
--- a/chrome/browser/enumerate_modules_model_win.cc
+++ b/chrome/browser/enumerate_modules_model_win.cc
@@ -41,6 +41,11 @@ static const ModuleEnumerator::RecommendedAction kUninstallLink =
static_cast<ModuleEnumerator::RecommendedAction>(
ModuleEnumerator::UNINSTALL | ModuleEnumerator::SEE_LINK);
+// Short-hand for things on the blacklist we are investigating and have info.
+static const ModuleEnumerator::RecommendedAction kInvestigatingLink =
+ static_cast<ModuleEnumerator::RecommendedAction>(
+ ModuleEnumerator::INVESTIGATING | ModuleEnumerator::SEE_LINK);
+
// A sort method that sorts by bad modules first, then by full name (including
// path).
static bool ModuleSort(const ModuleEnumerator::Module& a,
@@ -104,6 +109,11 @@ bool ConvertToLongPath(const string16& short_path, string16* long_path) {
const ModuleEnumerator::BlacklistEntry ModuleEnumerator::kModuleBlacklist[] = {
// NOTE: Please keep this list sorted by dll name, then location.
+ // Version 3.2.1.6 seems to be implicated in most cases (and 3.2.2.2 in some).
+ // There is a more recent version available for download.
+ // accelerator.dll, "%programfiles%\\speedbit video accelerator\\".
+ { "7ba9402f", "c9132d48", "", "", "", INVESTIGATING },
+
// apiqq0.dll, "%temp%\\".
{ "26134911", "59145acf", "", "", "", kUninstallLink },
@@ -113,6 +123,11 @@ const ModuleEnumerator::BlacklistEntry ModuleEnumerator::kModuleBlacklist[] = {
// arking1.dll, "%systemroot%\\system32\\".
{ "c60ca062", "23d01d5b", "", "", "", kUninstallLink },
+ // Said to belong to Killer NIC from BigFoot Networks (not verified). Versions
+ // 6.0.0.7 and 6.0.0.10 implicated.
+ // bfllr.dll, "%systemroot%\\system32\\".
+ { "6bb57633", "23d01d5b", "", "", "", INVESTIGATING },
+
// clickpotatolitesahook.dll, "". Different version each report.
{ "0396e037.dll", "", "", "", "", kUninstallLink },
@@ -125,6 +140,11 @@ const ModuleEnumerator::BlacklistEntry ModuleEnumerator::kModuleBlacklist[] = {
// dsoqq0.dll, "%temp%\\".
{ "1c4df325", "59145acf", "", "", "", kUninstallLink },
+ // This looks like a malware edition of a Brazilian Bank plugin, sometimes
+ // referred to as Malware.Banc.A.
+ // gbieh.dll, "%programfiles%\\gbplugin\\".
+ { "4cb4f2e3", "88e4a3b1", "", "", "", kUninstallLink },
+
// hblitesahook.dll. Each report has different version number in location.
{ "5d10b363", "", "", "", "", kUninstallLink },
@@ -170,10 +190,19 @@ const ModuleEnumerator::BlacklistEntry ModuleEnumerator::kModuleBlacklist[] = {
// nodqq0.dll, "%temp%\\".
{ "b86ce04d", "59145acf", "", "", "", kUninstallLink },
+ // nProtect GameGuard Anti-cheat system. Every report has a different
+ // location, since it is installed into and run from a game folder. Various
+ // versions implicated.
+ // npggnt.des, no fixed location.
+ { "f2c8790d", "", "", "", "", INVESTIGATING },
+
// nvlsp.dll,
// "%programfiles%\\nvidia corporation\\networkaccessmanager\\bin32\\".
{ "37f907e2", "3ad0ff23", "", "", "", INVESTIGATING },
+ // post0.dll, "%systemroot%\\system32\\".
+ { "7405c0c8", "23d01d5b", "", "", "", kUninstallLink },
+
// radhslib.dll (Naomi web filter), "%programfiles%\\rnamfler\\".
// See http://crbug.com/12517.
{ "7edcd250", "0733dc3e", "", "", "", INVESTIGATING },
@@ -184,6 +213,9 @@ const ModuleEnumerator::BlacklistEntry ModuleEnumerator::kModuleBlacklist[] = {
// rooksdol.dll, "%programfiles%\\trusteer\\rapport\\bin\\".
{ "802aefef", "06120e13", "", "", "", INVESTIGATING },
+ // sdata.dll, "%programdata%\\srtserv\\".
+ { "1936d5cc", "223c44be", "", "", "", kUninstallLink },
+
// searchtree.dll,
// "%programfiles%\\contentwatch\\internet protection\\modules\\".
{ "f6915a31", "4e61ce60", "", "", "", INVESTIGATING },
@@ -191,6 +223,11 @@ const ModuleEnumerator::BlacklistEntry ModuleEnumerator::kModuleBlacklist[] = {
// sgprxy.dll, "%commonprogramfiles%\\is3\\anti-spyware\\".
{ "005965ea", "bc5673f2", "", "", "", INVESTIGATING },
+ // swi_filter_0001.dll (Sophos Web Intelligence),
+ // "%programfiles%\\sophos\\sophos anti-virus\\web intelligence\\".
+ // A small random sample all showed version 1.0.5.0.
+ { "61112d7b", "25fb120f", "", "", "", INVESTIGATING },
+
// twking0.dll, "%systemroot%\\system32\\".
{ "0355549b", "23d01d5b", "", "", "", kUninstallLink },
@@ -538,6 +575,7 @@ void ModuleEnumerator::PreparePathMappings() {
std::vector<string16> env_vars;
env_vars.push_back(L"LOCALAPPDATA");
env_vars.push_back(L"ProgramFiles");
+ env_vars.push_back(L"ProgramData");
env_vars.push_back(L"USERPROFILE");
env_vars.push_back(L"SystemRoot");
env_vars.push_back(L"TEMP");
@@ -716,6 +754,27 @@ EnumerateModulesModel* EnumerateModulesModel::GetInstance() {
return Singleton<EnumerateModulesModel>::get();
}
+bool EnumerateModulesModel::ShouldShowConflictWarning() const {
+ // If the user has acknowledged the conflict notification, then we don't need
+ // to show it again (because the scanning only happens once per the lifetime
+ // of the process). If we were to run the scanning more than once, then we'd
+ // need to clear the flag somewhere when we are ready to show it again.
+ if (conflict_notification_acknowledged_)
+ return false;
+
+ return confirmed_bad_modules_detected_ > 0;
+}
+
+void EnumerateModulesModel::AcknowledgeConflictNotification() {
+ if (!conflict_notification_acknowledged_) {
+ conflict_notification_acknowledged_ = true;
+ NotificationService::current()->Notify(
+ NotificationType::MODULE_INCOMPATIBILITY_BADGE_CHANGE,
+ Source<EnumerateModulesModel>(this),
+ NotificationService::NoDetails());
+ }
+}
+
void EnumerateModulesModel::ScanNow() {
if (scanning_)
return; // A scan is already in progress.
@@ -731,7 +790,7 @@ void EnumerateModulesModel::ScanNow() {
module_enumerator_->ScanNow(&enumerated_modules_, limited_mode_);
}
-ListValue* EnumerateModulesModel::GetModuleList() {
+ListValue* EnumerateModulesModel::GetModuleList() const {
if (scanning_)
return NULL;
@@ -821,8 +880,9 @@ ListValue* EnumerateModulesModel::GetModuleList() {
}
EnumerateModulesModel::EnumerateModulesModel()
- : scanning_(false),
- limited_mode_(false),
+ : limited_mode_(false),
+ scanning_(false),
+ conflict_notification_acknowledged_(false),
confirmed_bad_modules_detected_(0),
suspected_bad_modules_detected_(0) {
const CommandLine& cmd_line = *CommandLine::ForCurrentProcess();
@@ -875,17 +935,14 @@ void EnumerateModulesModel::DoneScanning() {
if (!cmd_line.HasSwitch(switches::kConflictingModulesCheck))
return;
- if (suspected_bad_modules_detected_ || confirmed_bad_modules_detected_) {
- bool found_confirmed_bad_modules = confirmed_bad_modules_detected_ > 0;
- NotificationService::current()->Notify(
- NotificationType::MODULE_INCOMPATIBILITY_DETECTED,
- Source<EnumerateModulesModel>(this),
- Details<bool>(&found_confirmed_bad_modules));
- }
+ NotificationService::current()->Notify(
+ NotificationType::MODULE_INCOMPATIBILITY_BADGE_CHANGE,
+ Source<EnumerateModulesModel>(this),
+ NotificationService::NoDetails());
}
GURL EnumerateModulesModel::ConstructHelpCenterUrl(
- const ModuleEnumerator::Module& module) {
+ const ModuleEnumerator::Module& module) const {
if (!(module.recommended_action & ModuleEnumerator::SEE_LINK))
return GURL();