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

Unified Diff: net/base/net_util.cc

Issue 1177933002: Resolve RFC 6761 localhost names to loopback (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rsleevi, mmenke comments Created 5 years, 6 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
Index: net/base/net_util.cc
diff --git a/net/base/net_util.cc b/net/base/net_util.cc
index 028b56b74a8bb526b4e486bb1c328efda71005d4..97a7f854cb3933e2647127e49030bf04b5d853e5 100644
--- a/net/base/net_util.cc
+++ b/net/base/net_util.cc
@@ -730,10 +730,31 @@ int GetPortFromSockaddr(const struct sockaddr* address, socklen_t address_len) {
return base::NetToHost16(*port_field);
}
+bool IsLocalhostHostname(const std::string& host, bool* isLocalhost6) {
+ std::string lowercased_host = base::StringToLowerASCII(host);
+ if (lowercased_host == "localhost6" ||
+ lowercased_host == "localhost6.localdomain6" ||
+ lowercased_host == "localhost6." ||
+ lowercased_host == "localhost6.localdomain6.") {
+ *isLocalhost6 = true;
+ return true;
+ }
+
+ if (lowercased_host == "localhost" ||
+ lowercased_host == "localhost.localdomain" ||
+ lowercased_host == "localhost." ||
+ lowercased_host == "localhost.localdomain." ||
+ IsLocalhostTLD(lowercased_host)) {
+ *isLocalhost6 = false;
+ return true;
+ }
+
+ return false;
+}
+
bool IsLocalhost(const std::string& host) {
- if (host == "localhost" || host == "localhost.localdomain" ||
- host == "localhost6" || host == "localhost6.localdomain6" ||
- IsLocalhostTLD(host))
+ bool isIPv6;
+ if (IsLocalhostHostname(host, &isIPv6))
return true;
IPAddressNumber ip_number;

Powered by Google App Engine
This is Rietveld 408576698