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

Unified Diff: content/child/blink_platform_impl.cc

Issue 430193002: Wire 'blink::Platform::isHostnameReservedIPAddress()' to 'net::IsReservedIPAddress()'. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/child/blink_platform_impl.h ('k') | content/child/blink_platform_unittest.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/child/blink_platform_impl.cc
diff --git a/content/child/blink_platform_impl.cc b/content/child/blink_platform_impl.cc
index ca4a2400c60eb79c371b66a080785b73e42683c9..17f52a8b27dba47fe1e4522c4fd1e97ddfd5ac1b 100644
--- a/content/child/blink_platform_impl.cc
+++ b/content/child/blink_platform_impl.cc
@@ -42,6 +42,7 @@
#include "net/base/data_url.h"
#include "net/base/mime_util.h"
#include "net/base/net_errors.h"
+#include "net/base/net_util.h"
#include "third_party/WebKit/public/platform/WebConvertableToTraceFormat.h"
#include "third_party/WebKit/public/platform/WebData.h"
#include "third_party/WebKit/public/platform/WebString.h"
@@ -439,6 +440,41 @@ WebURLError BlinkPlatformImpl::cancelledError(
return WebURLLoaderImpl::CreateError(unreachableURL, false, net::ERR_ABORTED);
}
+bool BlinkPlatformImpl::isHostnameReservedIPAddress(
+ const blink::WebString& hostname) const {
+ // CanonicalizeHost requires surrounding brackets to parse an IPv6 address:
+ // these are provided by 'blink::SecurityOrigin::host()', so we don't have to
+ // add them here.
+ std::string host = hostname.utf8();
+ url::CanonHostInfo host_info;
+ std::string canonical_name = net::CanonicalizeHost(host, &host_info);
Ryan Sleevi 2014/08/05 00:01:38 Is there no way to pre-canonicalize? This seems a
Mike West 2014/08/05 07:20:29 That's fair. We're getting the hostname from eithe
+
+ // If it's not an IP address or canonicalization fails, it's not a reserved
+ // IP address.
+ if (canonical_name.empty() || !host_info.IsIPAddress())
+ return false;
+
+ host = host.substr(host_info.out_host.begin, host_info.out_host.len);
Ryan Sleevi 2014/08/05 00:01:38 BUG: host_info.out_host is "location of the host w
Mike West 2014/08/05 07:20:29 I can drop this entirely.
+ if (host_info.family == url::CanonHostInfo::IPV6) {
+ // ParseIPLiteralToNumber requires that IPv6 addresses _not_ have brackets,
+ // so we strip them here. Hooray for consistency.
Ryan Sleevi 2014/08/05 00:01:37 URLs vs not-URLs ;)
Mike West 2014/08/05 07:20:29 Acknowledged.
+ host = host.substr(1, host.size() - 2);
+ }
+
+ net::IPAddressNumber host_addr;
+ if (!net::ParseIPLiteralToNumber(host, &host_addr))
Ryan Sleevi 2014/08/05 00:01:37 If you do find it unavoidable to call this every t
Mike West 2014/08/05 07:20:29 What do you think of the current patchset, which d
+ return false;
+
+ switch (host_info.family) {
+ case url::CanonHostInfo::IPV4:
+ case url::CanonHostInfo::IPV6:
+ return net::IsIPAddressReserved(host_addr);
+ case url::CanonHostInfo::NEUTRAL:
+ case url::CanonHostInfo::BROKEN:
+ return false;
+ }
+}
+
blink::WebThread* BlinkPlatformImpl::createThread(const char* name) {
return new WebThreadImpl(name);
}
« no previous file with comments | « content/child/blink_platform_impl.h ('k') | content/child/blink_platform_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698