Added defense in depth mechanism to host resolver to prevent long hostnames from getting into glibc's getaddrinfo.
BUG=50383
TEST=HostResolverImplTest.LongHost
Review URL: http://codereview.chromium.org/3052044
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@55319 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/net/base/host_resolver_proc.cc b/net/base/host_resolver_proc.cc
index 39d4fc4..9ae40208e 100644
--- a/net/base/host_resolver_proc.cc
+++ b/net/base/host_resolver_proc.cc
@@ -83,6 +83,8 @@
HostResolverFlags host_resolver_flags,
AddressList* addrlist,
int* os_error) {
+ static const size_t kMaxHostLength = 4096;
+
if (os_error)
*os_error = 0;
@@ -92,6 +94,11 @@
if (host.empty())
return ERR_NAME_NOT_RESOLVED;
+ // Limit the size of hostnames that will be resolved to combat issues in some
+ // platform's resolvers.
+ if (host.size() > kMaxHostLength)
+ return ERR_NAME_NOT_RESOLVED;
+
struct addrinfo* ai = NULL;
struct addrinfo hints = {0};