From 5c437bcc7a51edbef45242c5173cf7871fde2866 Mon Sep 17 00:00:00 2001 From: palmer Date: Wed, 3 Feb 2016 15:21:36 -0800 Subject: Make extensions use a correct same-origin check. GURL::GetOrigin does not do the right thing for all types of URLs. BUG=573317 Review URL: https://codereview.chromium.org/1658913002 Cr-Commit-Position: refs/heads/master@{#373381} --- extensions/common/url_pattern_set.cc | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'extensions/common') diff --git a/extensions/common/url_pattern_set.cc b/extensions/common/url_pattern_set.cc index 52db387..5f09564 100644 --- a/extensions/common/url_pattern_set.cc +++ b/extensions/common/url_pattern_set.cc @@ -14,6 +14,7 @@ #include "extensions/common/error_utils.h" #include "extensions/common/url_pattern.h" #include "url/gurl.h" +#include "url/origin.h" #include "url/url_constants.h" namespace extensions { @@ -152,11 +153,13 @@ void URLPatternSet::ClearPatterns() { } bool URLPatternSet::AddOrigin(int valid_schemes, const GURL& origin) { - DCHECK_EQ(origin.GetOrigin(), origin); + if (origin.is_empty()) + return false; + const url::Origin real_origin(origin); + DCHECK(real_origin.IsSameOriginWith(url::Origin(origin.GetOrigin()))); URLPattern origin_pattern(valid_schemes); // Origin adding could fail if |origin| does not match |valid_schemes|. - if (origin_pattern.Parse(origin.GetOrigin().spec()) != - URLPattern::PARSE_SUCCESS) { + if (origin_pattern.Parse(origin.spec()) != URLPattern::PARSE_SUCCESS) { return false; } origin_pattern.SetPath("/*"); -- cgit v1.1