Index: chrome/common/content_settings_pattern.cc |
diff --git a/chrome/common/content_settings_pattern.cc b/chrome/common/content_settings_pattern.cc |
index 98ac6d637e2e52cae9ba9d582122e3d724e53dd6..9153de66ae7d151c95eb51c4def98cfb6a7b6a87 100644 |
--- a/chrome/common/content_settings_pattern.cc |
+++ b/chrome/common/content_settings_pattern.cc |
@@ -156,6 +156,20 @@ ContentSettingsPattern ContentSettingsPattern::Builder::Build() { |
} else { |
is_valid_ = Validate(parts_); |
} |
+ if (!is_valid_) |
+ return ContentSettingsPattern(); |
+ |
+ // A pattern is invalid if canonicalization is not idempotent. |
+ // This check is here because it should be checked no matter |
+ // use_legacy_validate_ is. |
+ PatternParts parts(parts_); |
+ if (!Canonicalize(&parts)) |
+ return ContentSettingsPattern(); |
+ if (ContentSettingsPattern(parts_, true) != |
+ ContentSettingsPattern(parts, true)) { |
+ return ContentSettingsPattern(); |
+ } |
+ |
return ContentSettingsPattern(parts_, is_valid_); |
} |