Title: [245982] trunk
Revision
245982
Author
achristen...@apple.com
Date
2019-05-31 13:55:25 -0700 (Fri, 31 May 2019)

Log Message

URLParser::parseHostAndPort should not allow non-port characters after an ipv6 host
https://bugs.webkit.org/show_bug.cgi?id=198428
<rdar://problem/51209196>

Reviewed by Tim Horton.

Source/WTF:

This matches Chrome and Firefox.

* wtf/URLParser.cpp:
(WTF::URLParser::parseHostAndPort):

Tools:

* TestWebKitAPI/Tests/WTF/URLParser.cpp:
(TestWebKitAPI::TEST_F):

Modified Paths

Diff

Modified: trunk/Source/WTF/ChangeLog (245981 => 245982)


--- trunk/Source/WTF/ChangeLog	2019-05-31 20:52:31 UTC (rev 245981)
+++ trunk/Source/WTF/ChangeLog	2019-05-31 20:55:25 UTC (rev 245982)
@@ -1,3 +1,16 @@
+2019-05-31  Alex Christensen  <achristen...@webkit.org>
+
+        URLParser::parseHostAndPort should not allow non-port characters after an ipv6 host
+        https://bugs.webkit.org/show_bug.cgi?id=198428
+        <rdar://problem/51209196>
+
+        Reviewed by Tim Horton.
+
+        This matches Chrome and Firefox.
+
+        * wtf/URLParser.cpp:
+        (WTF::URLParser::parseHostAndPort):
+
 2019-05-31  Tim Horton  <timothy_hor...@apple.com>
 
         Optionally respect device management restrictions when loading from the network

Modified: trunk/Source/WTF/wtf/URLParser.cpp (245981 => 245982)


--- trunk/Source/WTF/wtf/URLParser.cpp	2019-05-31 20:52:31 UTC (rev 245981)
+++ trunk/Source/WTF/wtf/URLParser.cpp	2019-05-31 20:55:25 UTC (rev 245982)
@@ -2650,13 +2650,11 @@
             serializeIPv6(address.value());
             if (!ipv6End.atEnd()) {
                 advance(ipv6End);
-                if (!ipv6End.atEnd() && *ipv6End == ':') {
-                    m_url.m_hostEnd = currentPosition(ipv6End);
+                m_url.m_hostEnd = currentPosition(ipv6End);
+                if (!ipv6End.atEnd() && *ipv6End == ':')
                     return parsePort(ipv6End);
-                }
-                m_url.m_hostEnd = currentPosition(ipv6End);
                 m_url.m_portLength = 0;
-                return true;
+                return ipv6End.atEnd();
             }
             m_url.m_hostEnd = currentPosition(ipv6End);
             return true;

Modified: trunk/Tools/ChangeLog (245981 => 245982)


--- trunk/Tools/ChangeLog	2019-05-31 20:52:31 UTC (rev 245981)
+++ trunk/Tools/ChangeLog	2019-05-31 20:55:25 UTC (rev 245982)
@@ -1,3 +1,14 @@
+2019-05-31  Alex Christensen  <achristen...@webkit.org>
+
+        URLParser::parseHostAndPort should not allow non-port characters after an ipv6 host
+        https://bugs.webkit.org/show_bug.cgi?id=198428
+        <rdar://problem/51209196>
+
+        Reviewed by Tim Horton.
+
+        * TestWebKitAPI/Tests/WTF/URLParser.cpp:
+        (TestWebKitAPI::TEST_F):
+
 2019-05-28  Dewei Zhu  <dewei_...@apple.com>
 
         run-benchmark should report an error if the argument to --build-directory is bogus

Modified: trunk/Tools/TestWebKitAPI/Tests/WTF/URLParser.cpp (245981 => 245982)


--- trunk/Tools/TestWebKitAPI/Tests/WTF/URLParser.cpp	2019-05-31 20:52:31 UTC (rev 245981)
+++ trunk/Tools/TestWebKitAPI/Tests/WTF/URLParser.cpp	2019-05-31 20:55:25 UTC (rev 245982)
@@ -1211,6 +1211,9 @@
     shouldFail("://:0/", "about:blank");
     shouldFail("about~");
     shouldFail("//C:asdf/foo/bar", "file:///tmp/mock/path");
+    shouldFail("wss://[c::]abc/");
+    shouldFail("abc://[c::]:abc/");
+    shouldFail("abc://[c::]01");
     shouldFail("http://[1234::ab#]");
     shouldFail("http://[1234::ab/]");
     shouldFail("http://[1234::ab?]");
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to