Chromium Code Reviews| Index: net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc |
| diff --git a/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc b/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc |
| index 0d553cb255b3b8f79a4a1c95dd2fad807323a986..8df4c34dc726b985eae6aaccc1d4e36be566bfce 100644 |
| --- a/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc |
| +++ b/net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc |
| @@ -56,16 +56,17 @@ size_t GetRegistryLengthFromURLIncludingPrivate( |
| INCLUDE_PRIVATE_REGISTRIES); |
| } |
| -size_t GetRegistryLengthFromHost( |
| - const std::string& host, |
| - UnknownRegistryFilter unknown_filter) { |
| - return GetRegistryLength(host, unknown_filter, EXCLUDE_PRIVATE_REGISTRIES); |
| +size_t GetRegistryLengthForCanonicalHost(const std::string& host, |
| + UnknownRegistryFilter unknown_filter) { |
| + return GetRegistryLengthForCanonicalHost(host, unknown_filter, |
| + EXCLUDE_PRIVATE_REGISTRIES); |
| } |
| -size_t GetRegistryLengthFromHostIncludingPrivate( |
| +size_t GetRegistryLengthForCanonicalHostIncludingPrivate( |
| const std::string& host, |
| UnknownRegistryFilter unknown_filter) { |
| - return GetRegistryLength(host, unknown_filter, INCLUDE_PRIVATE_REGISTRIES); |
| + return GetRegistryLengthForCanonicalHost(host, unknown_filter, |
| + INCLUDE_PRIVATE_REGISTRIES); |
| } |
| } // namespace |
| @@ -216,57 +217,74 @@ TEST_F(RegistryControlledDomainTest, TestGetRegistryLength) { |
| // Test std::string version of GetRegistryLength(). Uses the same |
| // underpinnings as the GURL version, so this is really more of a check of |
| // CanonicalizeHost(). |
| - EXPECT_EQ(2U, GetRegistryLengthFromHost("a.baz.jp", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
| - EXPECT_EQ(3U, GetRegistryLengthFromHost("a.baz.jp.", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("ac.jp", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 2 |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("a.bar.jp", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("bar.jp", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.bar.jp", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 |
| - EXPECT_EQ(12U, GetRegistryLengthFromHost("a.b.baz.bar.jp", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 4 |
| - EXPECT_EQ(6U, GetRegistryLengthFromHost("baz.pref.bar.jp", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 5 |
| - EXPECT_EQ(11U, GetRegistryLengthFromHost("a.b.bar.baz.com", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 6 |
| - EXPECT_EQ(3U, GetRegistryLengthFromHost("a.d.c", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
| - EXPECT_EQ(3U, GetRegistryLengthFromHost(".a.d.c", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
| - EXPECT_EQ(3U, GetRegistryLengthFromHost("..a.d.c", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
| - EXPECT_EQ(1U, GetRegistryLengthFromHost("a.b.c", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8 |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // none |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("baz.com.", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); // none |
| - EXPECT_EQ(3U, GetRegistryLengthFromHost("baz.com", |
| - INCLUDE_UNKNOWN_REGISTRIES)); // none |
| - EXPECT_EQ(4U, GetRegistryLengthFromHost("baz.com.", |
| - INCLUDE_UNKNOWN_REGISTRIES)); // none |
| - |
| - EXPECT_EQ(std::string::npos, |
| - GetRegistryLengthFromHost(std::string(), EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("foo.com..", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("..", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("192.168.0.1", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost", |
| - INCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.", |
| - EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost("localhost.", |
| - INCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(2U, GetRegistryLengthForCanonicalHost( |
| + "a.baz.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
| + EXPECT_EQ(3U, GetRegistryLengthForCanonicalHost( |
| + "a.baz.jp.", EXCLUDE_UNKNOWN_REGISTRIES)); // 1 |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost( |
| + "ac.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 2 |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost( |
| + "a.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost( |
| + "bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3 |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost( |
| + "baz.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 3 4 |
| + EXPECT_EQ(12U, GetRegistryLengthForCanonicalHost( |
| + "a.b.baz.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 4 |
| + EXPECT_EQ(6U, GetRegistryLengthForCanonicalHost( |
| + "baz.pref.bar.jp", EXCLUDE_UNKNOWN_REGISTRIES)); // 5 |
| + EXPECT_EQ(11U, GetRegistryLengthForCanonicalHost( |
| + "a.b.bar.baz.com", EXCLUDE_UNKNOWN_REGISTRIES)); // 6 |
| + EXPECT_EQ(3U, GetRegistryLengthForCanonicalHost( |
| + "a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
| + EXPECT_EQ(3U, GetRegistryLengthForCanonicalHost( |
| + ".a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
| + EXPECT_EQ(3U, GetRegistryLengthForCanonicalHost( |
| + "..a.d.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 |
| + EXPECT_EQ(1U, GetRegistryLengthForCanonicalHost( |
| + "a.b.c", EXCLUDE_UNKNOWN_REGISTRIES)); // 7 8 |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost( |
| + "baz.com", EXCLUDE_UNKNOWN_REGISTRIES)); // none |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost( |
| + "baz.com.", EXCLUDE_UNKNOWN_REGISTRIES)); // none |
| + EXPECT_EQ(3U, GetRegistryLengthForCanonicalHost( |
| + "baz.com", INCLUDE_UNKNOWN_REGISTRIES)); // none |
| + EXPECT_EQ(4U, GetRegistryLengthForCanonicalHost( |
| + "baz.com.", INCLUDE_UNKNOWN_REGISTRIES)); // none |
| + |
| + EXPECT_EQ(std::string::npos, GetRegistryLengthForCanonicalHost( |
| + std::string(), EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost("foo.com..", |
| + EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost("..", EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost("192.168.0.1", |
| + EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost("localhost", |
| + EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost("localhost", |
| + INCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost("localhost.", |
| + EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHost("localhost.", |
| + INCLUDE_UNKNOWN_REGISTRIES)); |
| + |
| + // IDN case. This domain is: |
| + // Unicode: U+4E2D, U+56FD |
| + // UTF8: E4, B8, AD, E5, 9B, BD |
| + // IDN: xn--fiqs8s |
| + EXPECT_EQ(10U, GetRegistryLengthForCanonicalHost("foo.xn--fiqs8s", |
| + EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(10U, BuggyGetHostRegistryLength("foo.xn--fiqs8s", |
|
brettw
2016/10/19 20:17:43
This has a bug but I'm not uploading the fixed ver
|
| + EXCLUDE_UNKNOWN_REGISTRIES)); |
| + // These illustrate the "buggy" version on non-canonical URLs. They both |
| + // return 10 which is the length of the canonical version, which if the |
| + // calling code starts to use as offsets in the string will lead to |
| + // corruption. |
| + // EXPECT_EQ(18U, BuggyGetHostRegistryLength("foo.%E4%B8%AD%E5%9B%BD", |
| + // EXCLUDE_UNKNOWN_REGISTRIES)); |
| + // EXPECT_EQ(6U, BuggyGetHostRegistryLength("foo.\xE4\xB8\xAD\xE5\x9B\xBD", |
| + // EXCLUDE_UNKNOWN_REGISTRIES)); |
| } |
| TEST_F(RegistryControlledDomainTest, TestSameDomainOrHost) { |
| @@ -388,12 +406,14 @@ TEST_F(RegistryControlledDomainTest, TestDafsaTwoByteOffsets) { |
| "a.b.a____________________________________________________" |
| "________________________________________________8"; |
| - EXPECT_EQ(102U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(102U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(102U, GetRegistryLengthForCanonicalHost( |
| + key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(102U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| } |
| TEST_F(RegistryControlledDomainTest, TestDafsaThreeByteOffsets) { |
| @@ -421,12 +441,14 @@ TEST_F(RegistryControlledDomainTest, TestDafsaThreeByteOffsets) { |
| "a.b.Za___________________________________________________" |
| "_________________________________________________Z8"; |
| - EXPECT_EQ(104U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(104U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(104U, GetRegistryLengthForCanonicalHost( |
| + key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(104U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| } |
| TEST_F(RegistryControlledDomainTest, TestDafsaJoinedPrefixes) { |
| @@ -446,24 +468,26 @@ TEST_F(RegistryControlledDomainTest, TestDafsaJoinedPrefixes) { |
| const char key6[] = "a.b.aaaam"; |
| const char key7[] = "a.b.bbbbn"; |
| - EXPECT_EQ(2U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(2U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(3U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(3U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key4, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key5, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(5U, GetRegistryLengthFromHost(key6, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(5U, GetRegistryLengthFromHost(key7, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 2U, GetRegistryLengthForCanonicalHost(key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(2U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 3U, GetRegistryLengthForCanonicalHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(3U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key4, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key5, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 5U, GetRegistryLengthForCanonicalHost(key6, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 5U, GetRegistryLengthForCanonicalHost(key7, EXCLUDE_UNKNOWN_REGISTRIES)); |
| } |
| TEST_F(RegistryControlledDomainTest, TestDafsaJoinedSuffixes) { |
| @@ -483,24 +507,26 @@ TEST_F(RegistryControlledDomainTest, TestDafsaJoinedSuffixes) { |
| const char key6[] = "a.b.maaaa"; |
| const char key7[] = "a.b.nbbbb"; |
| - EXPECT_EQ(2U, GetRegistryLengthFromHost(key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(2U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(3U, GetRegistryLengthFromHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, GetRegistryLengthFromHost(key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(3U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key4, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(0U, |
| - GetRegistryLengthFromHostIncludingPrivate( |
| - key5, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(5U, GetRegistryLengthFromHost(key6, EXCLUDE_UNKNOWN_REGISTRIES)); |
| - EXPECT_EQ(5U, GetRegistryLengthFromHost(key7, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 2U, GetRegistryLengthForCanonicalHost(key0, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(2U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key1, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 3U, GetRegistryLengthForCanonicalHost(key2, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 0U, GetRegistryLengthForCanonicalHost(key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(3U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key3, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key4, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ(0U, GetRegistryLengthForCanonicalHostIncludingPrivate( |
| + key5, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 5U, GetRegistryLengthForCanonicalHost(key6, EXCLUDE_UNKNOWN_REGISTRIES)); |
| + EXPECT_EQ( |
| + 5U, GetRegistryLengthForCanonicalHost(key7, EXCLUDE_UNKNOWN_REGISTRIES)); |
| } |
| } // namespace registry_controlled_domains |
| } // namespace net |