Index: webrtc/base/win32_unittest.cc |
diff --git a/webrtc/base/win32_unittest.cc b/webrtc/base/win32_unittest.cc |
index 15b2614111ca7eeacc6914dd339f0e3f8fa0073f..96e0bd292ab4b7b9c5b306b087127464ae02d1c3 100644 |
--- a/webrtc/base/win32_unittest.cc |
+++ b/webrtc/base/win32_unittest.cc |
@@ -92,4 +92,31 @@ TEST_F(Win32Test, IPv6AddressCompression) { |
EXPECT_EQ("1234:5678:abcd:1234:5678:abcd:1234:5678", ipv6.ToString()); |
} |
+// Test that invalid IPv6 addresses are recognized and false is returned. |
+TEST_F(Win32Test, InvalidIPv6AddressParsing) { |
+ IPAddress ipv6; |
+ |
+ // More than 1 run of "::"s. |
+ EXPECT_FALSE(IPFromString("1::2::3", &ipv6)); |
+ |
+ // More than 1 run of "::"s in a longer address. |
+ // See: https://bugs.chromium.org/p/webrtc/issues/detail?id=7592 |
+ EXPECT_FALSE(IPFromString("1::2::3::4::5::6::7::8", &ipv6)); |
+ |
+ // Three ':'s in a row. |
+ EXPECT_FALSE(IPFromString("1:::2", &ipv6)); |
+ |
+ // Non-hex character. |
+ EXPECT_FALSE(IPFromString("test::1", &ipv6)); |
+ |
+ // More than 4 hex digits per group. |
+ EXPECT_FALSE(IPFromString("abcde::1", &ipv6)); |
+ |
+ // More than 8 groups. |
+ EXPECT_FALSE(IPFromString("1:2:3:4:5:6:7:8:9", &ipv6)); |
+ |
+ // Less than 8 groups. |
+ EXPECT_FALSE(IPFromString("1:2:3:4:5:6:7", &ipv6)); |
+} |
+ |
} // namespace rtc |