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

Unified Diff: net/base/registry_controlled_domains/registry_controlled_domain_unittest.cc

Issue 2433583002: Reduce buggy usage of the registry controlled domain service. (Closed)
Patch Set: . Created 4 years, 2 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/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

Powered by Google App Engine
This is Rietveld 408576698