[webkit-changes] [WebKit/WebKit] 85f983: NUL bytes in header values allowed for fetch-API

youennf noreply at github.com
Sun May 5 07:32:12 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 85f98322e6a68f91eff9a5c02bce5d9ea908bb84
      https://github.com/WebKit/WebKit/commit/85f98322e6a68f91eff9a5c02bce5d9ea908bb84
  Author: Youenn Fablet <youenn at apple.com>
  Date:   2024-05-05 (Sun, 05 May 2024)

  Changed paths:
    M LayoutTests/imported/w3c/web-platform-tests/cookies/name/name-ctl-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/cookies/resources/cookie-test.js
    M LayoutTests/imported/w3c/web-platform-tests/cookies/value/value-ctl-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/fetch/h1-parsing/resources-with-0x00-in-header.window-expected.txt
    M LayoutTests/imported/w3c/web-platform-tests/fetch/h1-parsing/resources-with-0x00-in-header.window.js
    M LayoutTests/platform/mac-monterey/imported/w3c/web-platform-tests/cookies/value/value-ctl-expected.txt
    R LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/cookies/name/name-ctl-expected.txt
    R LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/cookies/value/value-ctl-expected.txt
    M Source/WebCore/loader/DocumentThreadableLoader.cpp
    M Source/WebCore/loader/SubresourceLoader.cpp
    M Source/WebCore/platform/network/ResourceErrorBase.cpp
    M Source/WebCore/platform/network/ResourceErrorBase.h
    M Source/WebCore/platform/network/ResourceResponseBase.h
    M Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp

  Log Message:
  -----------
  NUL bytes in header values allowed for fetch-API
https://bugs.webkit.org/show_bug.cgi?id=272740
rdar://126913166

Reviewed by Chris Dumez and Alex Christensen.

In no-cors mode, we are filtering responses before sending them to web process.
This can remove NUL header values.
We add a check in NetworkLoadChecker for NUL header values and fail the load as done in web pProcess.
We introduce a badResponseHeadersError routine to share more code between web process and network process.

We add a test in LayoutTests/imported/w3c/web-platform-tests/fetch/h1-parsing/resources-with-0x00-in-header.window.js to cover the change.
We have to update LayoutTests/imported/w3c/web-platform-tests/cookies/resources/cookie-test.js to make sure cookie removal is done one at a time since our test runner has this constraint.

* LayoutTests/imported/w3c/web-platform-tests/cookies/name/name-ctl-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/cookies/resources/cookie-test.js:
* LayoutTests/imported/w3c/web-platform-tests/cookies/value/value-ctl-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/h1-parsing/resources-with-0x00-in-header.window-expected.txt:
* LayoutTests/imported/w3c/web-platform-tests/fetch/h1-parsing/resources-with-0x00-in-header.window.js:
(promise_test.async t):
* LayoutTests/platform/mac-monterey/imported/w3c/web-platform-tests/cookies/value/value-ctl-expected.txt:
* LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/cookies/name/name-ctl-expected.txt: Removed.
* LayoutTests/platform/mac-wk1/imported/w3c/web-platform-tests/cookies/value/value-ctl-expected.txt: Removed.
* Source/WebCore/loader/DocumentThreadableLoader.cpp:
(WebCore::DocumentThreadableLoader::loadRequest):
* Source/WebCore/loader/SubresourceLoader.cpp:
(WebCore::SubresourceLoader::didReceiveResponse):
* Source/WebCore/platform/network/ResourceErrorBase.cpp:
(WebCore::badResponseHeadersError):
* Source/WebCore/platform/network/ResourceErrorBase.h:
* Source/WebCore/platform/network/ResourceResponseBase.h:
* Source/WebKit/NetworkProcess/NetworkLoadChecker.cpp:
(WebKit::NetworkLoadChecker::validateResponse):

Canonical link: https://commits.webkit.org/278389@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