Index: chrome/browser/webdata/web_database.cc |
diff --git a/chrome/browser/webdata/web_database.cc b/chrome/browser/webdata/web_database.cc |
index 122f3de405216bc702522562dbbdbe49d130503a..191a464e1a11af2e393d211b269652b2a53077c3 100644 |
--- a/chrome/browser/webdata/web_database.cc |
+++ b/chrome/browser/webdata/web_database.cc |
@@ -158,8 +158,15 @@ sql::InitStatus WebDatabase::Init(const FilePath& db_name) { |
} |
sql::InitStatus WebDatabase::MigrateOldVersionsAsNeeded() { |
+ // Some malware tries to force protector to re-sign things by lowering the |
+ // version number, causing migration to fail. Ensure the version number is at |
+ // least as high as the compatible version number. |
+ int current_version = std::max(meta_table_.GetVersionNumber(), |
+ meta_table_.GetCompatibleVersionNumber()); |
+ if (current_version < meta_table_.GetCompatibleVersionNumber()) |
dhollowa
2012/07/09 20:26:06
Shouldn't this be:
if (meta_table_.GetVersionNum
Ivan Korotkov
2012/07/09 20:51:04
Ouch, you must be right. The test passed because t
Peter Kasting
2012/07/09 21:22:01
I'm sorry for suggesting this incorrect code to Iv
|
+ ChangeVersion(&meta_table_, current_version, false); |
+ |
// Migrate if necessary. |
- int current_version = meta_table_.GetVersionNumber(); |
switch (current_version) { |
// Versions 1 - 19 are unhandled. Version numbers greater than |
// kCurrentVersionNumber should have already been weeded out by the caller. |