Index: chrome/browser/extensions/extension_action.cc |
diff --git a/chrome/browser/extensions/extension_action.cc b/chrome/browser/extensions/extension_action.cc |
index 5476478e1e5bfffb95c7230445cea92a436f2ae9..4742e75b488fa5d261e3cf7e4cf48a88bff2776c 100644 |
--- a/chrome/browser/extensions/extension_action.cc |
+++ b/chrome/browser/extensions/extension_action.cc |
@@ -130,8 +130,12 @@ bool ExtensionAction::ParseIconFromCanvasDictionary( |
for (base::DictionaryValue::Iterator iter(dict); !iter.IsAtEnd(); |
iter.Advance()) { |
int icon_size = 0; |
- if (!base::StringToInt(iter.key(), &icon_size)) |
+ // Chrome helpfully scales the provided icon(s), but let's not go overboard. |
+ const int kActionIconMaxSize = 10 * extension_misc::EXTENSION_ICON_ACTION; |
+ if (!base::StringToInt(iter.key(), &icon_size) || icon_size <= 0 || |
+ icon_size > kActionIconMaxSize) { |
continue; |
+ } |
const base::BinaryValue* image_data; |
std::string binary_string64; |