Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(15)

Side by Side Diff: Source/platform/weborigin/OriginAccessEntry.cpp

Issue 1135493005: Revert of Improve OriginAccessEntry support for IP addresses. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2009 Google Inc. All rights reserved. 2 * Copyright (C) 2009 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are 5 * modification, are permitted provided that the following conditions are
6 * met: 6 * met:
7 * 7 *
8 * * Redistributions of source code must retain the above copyright 8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above 10 * * Redistributions in binary form must reproduce the above
(...skipping 13 matching lines...) Expand all
24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 24 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 25 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 26 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29 */ 29 */
30 30
31 #include "config.h" 31 #include "config.h"
32 #include "platform/weborigin/OriginAccessEntry.h" 32 #include "platform/weborigin/OriginAccessEntry.h"
33 33
34 #include "platform/weborigin/KURL.h"
35 #include "platform/weborigin/SecurityOrigin.h" 34 #include "platform/weborigin/SecurityOrigin.h"
36 #include "public/platform/Platform.h" 35 #include "public/platform/Platform.h"
37 #include "public/platform/WebPublicSuffixList.h" 36 #include "public/platform/WebPublicSuffixList.h"
38 #include <url/third_party/mozilla/url_parse.h>
39 #include <url/url_canon.h>
40 37
41 namespace blink { 38 namespace blink {
42 39
43 namespace {
44
45 // TODO(mkwst): This basically replicates GURL::HostIsIPAddress. If/when
46 // we re-evaluate everything after merging the Blink and Chromium
47 // repositories, perhaps we can just use that directly.
48 bool HostIsIPAddress(const String& host)
49 {
50 if (host.isEmpty())
51 return false;
52
53 String protocol("https://");
54 KURL url(KURL(), protocol + host + "/");
55 if (!url.isValid())
56 return false;
57
58 url::RawCanonOutputT<char, 128> ignoredOutput;
59 url::CanonHostInfo hostInfo;
60 url::Component hostComponent(protocol.length(), host.length());
61 url::CanonicalizeIPAddress(url.string().utf8().data(), hostComponent, &ignor edOutput, &hostInfo);
62 return hostInfo.IsIPAddress();
63 }
64
65 }
66
67 OriginAccessEntry::OriginAccessEntry(const String& protocol, const String& host, SubdomainSetting subdomainSetting, IPAddressSetting ipAddressSetting) 40 OriginAccessEntry::OriginAccessEntry(const String& protocol, const String& host, SubdomainSetting subdomainSetting, IPAddressSetting ipAddressSetting)
68 : m_protocol(protocol.lower()) 41 : m_protocol(protocol.lower())
69 , m_host(host.lower()) 42 , m_host(host.lower())
70 , m_subdomainSettings(subdomainSetting) 43 , m_subdomainSettings(subdomainSetting)
71 , m_ipAddressSettings(ipAddressSetting) 44 , m_ipAddressSettings(ipAddressSetting)
72 , m_hostIsPublicSuffix(false) 45 , m_hostIsPublicSuffix(false)
73 { 46 {
74 ASSERT(subdomainSetting == AllowSubdomains || subdomainSetting == DisallowSu bdomains); 47 ASSERT(subdomainSetting == AllowSubdomains || subdomainSetting == DisallowSu bdomains);
75 48
76 m_hostIsIPAddress = HostIsIPAddress(host); 49 // Assume that any host that ends with a digit is trying to be an IP address .
50 m_hostIsIPAddress = !m_host.isEmpty() && isASCIIDigit(m_host[m_host.length() - 1]);
77 51
78 // Look for top-level domains, either with or without an additional dot. 52 // Look for top-level domains, either with or without an additional dot.
79 if (!m_hostIsIPAddress) { 53 if (!m_hostIsIPAddress) {
80 WebPublicSuffixList* suffixList = Platform::current()->publicSuffixList( ); 54 WebPublicSuffixList* suffixList = Platform::current()->publicSuffixList( );
81 if (suffixList && m_host.length() <= suffixList->getPublicSuffixLength(m _host) + 1) 55 if (suffixList && m_host.length() <= suffixList->getPublicSuffixLength(m _host) + 1)
82 m_hostIsPublicSuffix = true; 56 m_hostIsPublicSuffix = true;
83 } 57 }
84 } 58 }
85 59
86 OriginAccessEntry::MatchResult OriginAccessEntry::matchesOrigin(const SecurityOr igin& origin) const 60 OriginAccessEntry::MatchResult OriginAccessEntry::matchesOrigin(const SecurityOr igin& origin) const
(...skipping 24 matching lines...) Expand all
111 if (origin.host().length() <= m_host.length() || origin.host()[origin.host() .length() - m_host.length() - 1] != '.' || !origin.host().endsWith(m_host)) 85 if (origin.host().length() <= m_host.length() || origin.host()[origin.host() .length() - m_host.length() - 1] != '.' || !origin.host().endsWith(m_host))
112 return DoesNotMatchOrigin; 86 return DoesNotMatchOrigin;
113 87
114 if (m_hostIsPublicSuffix) 88 if (m_hostIsPublicSuffix)
115 return MatchesOriginButIsPublicSuffix; 89 return MatchesOriginButIsPublicSuffix;
116 90
117 return MatchesOrigin; 91 return MatchesOrigin;
118 } 92 }
119 93
120 } // namespace blink 94 } // namespace blink
OLDNEW
« no previous file with comments | « Source/platform/weborigin/OriginAccessEntry.h ('k') | Source/platform/weborigin/OriginAccessEntryTest.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698