diff options
author | bors-servo <lbergstrom+bors@mozilla.com> | 2020-01-29 20:35:47 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-01-29 20:35:47 -0500 |
commit | b939b3806f698443e94cd33b8a3dac17a0fe62bb (patch) | |
tree | da9e03349397132b876fe9f0e74bad1e59d7f08b | |
parent | 912a09c476c95de44d8f4c653c42d35567eba24c (diff) | |
parent | fc13bd8b2f8f7b06aea928e3e5ab56a4b3a2584a (diff) | |
download | servo-b939b3806f698443e94cd33b8a3dac17a0fe62bb.tar.gz servo-b939b3806f698443e94cd33b8a3dac17a0fe62bb.zip |
Auto merge of #25634 - pshaughn:cjkcookies, r=jdm
Accept UTF8 cookie header values
<!-- Please describe your changes on the following line: -->
HeaderValue::to_str only works on ASCII; cookies can be utf8 too, so we decode accordingly.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #25608
- [ ] There are tests for these changes in http_loader; I don't know whether websocket cookies have tests.
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
-rw-r--r-- | components/net/http_loader.rs | 2 | ||||
-rw-r--r-- | components/net/websocket_loader.rs | 2 | ||||
-rw-r--r-- | tests/wpt/metadata/cookies/http-state/charset-tests.html.ini | 13 |
3 files changed, 2 insertions, 15 deletions
diff --git a/components/net/http_loader.rs b/components/net/http_loader.rs index 0d0d7c46368..a8ba978df54 100644 --- a/components/net/http_loader.rs +++ b/components/net/http_loader.rs @@ -272,7 +272,7 @@ fn set_cookies_from_headers( cookie_jar: &RwLock<CookieStorage>, ) { for cookie in headers.get_all(header::SET_COOKIE) { - if let Ok(cookie_str) = cookie.to_str() { + if let Ok(cookie_str) = std::str::from_utf8(cookie.as_bytes()) { set_cookie_for_url(&cookie_jar, &url, &cookie_str); } } diff --git a/components/net/websocket_loader.rs b/components/net/websocket_loader.rs index 93bb031dca8..fb24e6566a4 100644 --- a/components/net/websocket_loader.rs +++ b/components/net/websocket_loader.rs @@ -92,7 +92,7 @@ impl<'a> Handler for Client<'a> { let mut jar = self.http_state.cookie_jar.write().unwrap(); // TODO(eijebong): Replace thise once typed headers settled on a cookie impl for cookie in headers.get_all(header::SET_COOKIE) { - if let Ok(s) = cookie.to_str() { + if let Ok(s) = std::str::from_utf8(cookie.as_bytes()) { if let Some(cookie) = Cookie::from_cookie_string(s.into(), self.resource_url, CookieSource::HTTP) { diff --git a/tests/wpt/metadata/cookies/http-state/charset-tests.html.ini b/tests/wpt/metadata/cookies/http-state/charset-tests.html.ini deleted file mode 100644 index 8b6f0fa25e4..00000000000 --- a/tests/wpt/metadata/cookies/http-state/charset-tests.html.ini +++ /dev/null @@ -1,13 +0,0 @@ -[charset-tests.html] - [charset0002 - charset0002] - expected: FAIL - - [charset0003 - charset0003] - expected: FAIL - - [charset0004 - charset0004] - expected: FAIL - - [charset0001 - charset0001] - expected: FAIL - |