| Index: net/dns/dns_util_unittest.cc
|
| diff --git a/net/dns/dns_util_unittest.cc b/net/dns/dns_util_unittest.cc
|
| index 1d534716b6afead994e02d9789c3ef0f130371ed..7b01d4263b926a24abc37042a59957ccf797697a 100644
|
| --- a/net/dns/dns_util_unittest.cc
|
| +++ b/net/dns/dns_util_unittest.cc
|
| @@ -6,6 +6,28 @@
|
|
|
| #include "testing/gtest/include/gtest/gtest.h"
|
|
|
| +namespace {
|
| +
|
| +bool IsValidDNSDomainName(const char* name) {
|
| + size_t length = strlen(name);
|
| + for (size_t i = 0; i < length; ++i) {
|
| + if (name[i] == '.') {
|
| + if (i == 0 || name[i - 1] == '.') {
|
| + return false;
|
| + }
|
| + continue;
|
| + }
|
| +
|
| + if (!net::IsValidHostLabelCharacter(name[i],
|
| + i == 0 || name[i - 1] == '.')) {
|
| + return false;
|
| + }
|
| + }
|
| + return true;
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| namespace net {
|
|
|
| class DNSUtilTest : public testing::Test {
|
| @@ -69,4 +91,30 @@ TEST_F(DNSUtilTest, DNSDomainToString) {
|
| EXPECT_EQ("", DNSDomainToString("\x06"));
|
| }
|
|
|
| +TEST_F(DNSUtilTest, IsValidDNSDomain) {
|
| + const char* const bad_hostnames[] = {
|
| + "%20%20noodles.blorg", "noo dles.blorg ", "noo dles.blorg. ",
|
| + "^noodles.blorg", "noodles^.blorg", "noo&dles.blorg",
|
| + "noodles.blorg`", "www.-noodles.blorg",
|
| + };
|
| +
|
| + // TODO(palmer): In the future, when we can remove support for invalid names,
|
| + // change the calls to from |IsValidDNSDomainName| to |IsValidDNSDomain|, and
|
| + // remove |IsValidDNSDomainName| (defined above).
|
| +
|
| + for (size_t i = 0; i < arraysize(bad_hostnames); ++i) {
|
| + EXPECT_FALSE(IsValidDNSDomainName(bad_hostnames[i]));
|
| + }
|
| +
|
| + const char* const good_hostnames[] = {
|
| + "www.noodles.blorg", "1www.noodles.blorg", "www.2noodles.blorg",
|
| + "www.n--oodles.blorg", "www.noodl_es.blorg", "www.no-_odles.blorg",
|
| + "www_.noodles.blorg", "www.noodles.blorg.", "_privet._tcp.local",
|
| + };
|
| +
|
| + for (size_t i = 0; i < arraysize(good_hostnames); ++i) {
|
| + EXPECT_TRUE(IsValidDNSDomainName(good_hostnames[i]));
|
| + }
|
| +}
|
| +
|
| } // namespace net
|
|
|