| Index: chrome/browser/extensions/extension_management_internal.cc
|
| diff --git a/chrome/browser/extensions/extension_management_internal.cc b/chrome/browser/extensions/extension_management_internal.cc
|
| index a2596ae6f4a73d2a9c4772dece0dfeb2c26e2e63..cab0415bc77a91f294e7a2f86f56377592838e5d 100644
|
| --- a/chrome/browser/extensions/extension_management_internal.cc
|
| +++ b/chrome/browser/extensions/extension_management_internal.cc
|
| @@ -115,6 +115,14 @@ bool IndividualSettings::Parse(const base::DictionaryValue* dict,
|
| // Get the list of URLPatterns.
|
| if (dict->GetListWithoutPathExpansion(key,
|
| &host_list_value)) {
|
| + if (host_list_value->GetSize() >
|
| + schema_constants::kMaxItemsURLPatternSet) {
|
| + LOG(WARNING) << "Exceeded maximum number of URL match patterns ("
|
| + << schema_constants::kMaxItemsURLPatternSet
|
| + << ") for attribute '" << key << "'";
|
| + return false;
|
| + }
|
| +
|
| out_value->ClearPatterns();
|
| const int extension_scheme_mask =
|
| URLPattern::GetValidSchemeMaskForExtensions();
|
| @@ -122,7 +130,8 @@ bool IndividualSettings::Parse(const base::DictionaryValue* dict,
|
| std::string unparsed_str;
|
| host_list_value->GetString(i, &unparsed_str);
|
| URLPattern pattern = URLPattern(extension_scheme_mask);
|
| - URLPattern::ParseResult parse_result = pattern.Parse(unparsed_str);
|
| + URLPattern::ParseResult parse_result = pattern.Parse(
|
| + unparsed_str, URLPattern::ALLOW_WILDCARD_FOR_EFFECTIVE_TLD);
|
| if (parse_result != URLPattern::PARSE_SUCCESS) {
|
| LOG(WARNING) << kMalformedPreferenceWarning;
|
| LOG(WARNING) << "Invalid URL pattern '" + unparsed_str +
|
|
|