[webkit-changes] [WebKit/WebKit] 452e38: URLPattern should validate IPv6 hostnames correctly

youennf noreply at github.com
Wed Jan 15 06:10:12 PST 2025


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 452e3815223fdac36e001b2721112dc539b4a00d
      https://github.com/WebKit/WebKit/commit/452e3815223fdac36e001b2721112dc539b4a00d
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2025-01-15 (Wed, 15 Jan 2025)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any.serviceworker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any.sharedworker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any.worker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any.serviceworker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any.sharedworker-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any.worker-expected.txt
    M Source/WebCore/Modules/url-pattern/URLPattern.cpp
    M Source/WebCore/Modules/url-pattern/URLPatternCanonical.cpp
    M Source/WebCore/Modules/url-pattern/URLPatternConstructorStringParser.cpp

  Log Message:
  -----------
  URLPattern should validate IPv6 hostnames correctly
rdar://142950979
https://bugs.webkit.org/show_bug.cgi?id=285979

Reviewed by Anne van Kesteren.

Fix bug in isInvalidIPv6HostCodePoint (check of valid special code points).
To make it clearer we rename isInvalidIPv6HostCodePoint to isValidIPv6HostCodePoint.

We also remove the use of URL::isIPv6Address in lieu of a routine isHostnamePatternIPv6 that implements https://urlpattern.spec.whatwg.org/#hostname-pattern-is-an-ipv6-address to follow the spec.

We update hostname canonicalization to add a check that the last character of an IPv6 hostname is ']' as per https://url.spec.whatwg.org/#concept-host-parser.

We update URLPatternConstructorStringParser so that it only checks for non special pattern character outside of IPv6 hostnames.

Covered by rebased tests.

* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any.serviceworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any.sharedworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.any.worker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any.serviceworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any.sharedworker-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/urlpattern/urlpattern.https.any.worker-expected.txt:
* Source/WebCore/Modules/url-pattern/URLPattern.cpp:
(WebCore::isHostnamePatternIPv6):
(WebCore::URLPattern::compileAllComponents):
* Source/WebCore/Modules/url-pattern/URLPatternCanonical.cpp:
(WebCore::isValidIPv6HostCodePoint):
(WebCore::canonicalizeHostname):
(WebCore::canonicalizeIPv6Hostname):
(WebCore::isInvalidIPv6HostCodePoint): Deleted.
* Source/WebCore/Modules/url-pattern/URLPatternConstructorStringParser.cpp:
(WebCore::URLPatternConstructorStringParser::updateState):

Canonical link: https://commits.webkit.org/288931@main



To unsubscribe from these emails, change your notification settings at https://github.com/WebKit/WebKit/settings/notifications


More information about the webkit-changes mailing list