mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-04-22 20:45:14 +00:00
AK: Do not trim away non-ASCII bytes when parsing URL
Because non-ASCII code points have negative byte values, trimming away control characters requires checking for negative bytes values. This also adds a test case with a URL containing non-ASCII code points.
This commit is contained in:
parent
44937e2dfc
commit
99d5555134
Notes:
sideshowbarker
2024-07-18 16:52:08 +09:00
Author: https://github.com/MaxWipfli Commit: https://github.com/SerenityOS/serenity/commit/99d55551341 Pull-request: https://github.com/SerenityOS/serenity/pull/7791 Reviewed-by: https://github.com/awesomekling
2 changed files with 11 additions and 2 deletions
|
@ -174,7 +174,7 @@ URL URLParser::parse(Badge<URL>, StringView const& raw_input, URL const* base_ur
|
|||
size_t start_index = 0;
|
||||
size_t end_index = raw_input.length();
|
||||
for (size_t i = 0; i < raw_input.length(); ++i) {
|
||||
if (raw_input[i] <= 0x20) {
|
||||
if (0 <= raw_input[i] && raw_input[i] <= 0x20) {
|
||||
++start_index;
|
||||
has_validation_error = true;
|
||||
} else {
|
||||
|
@ -182,7 +182,7 @@ URL URLParser::parse(Badge<URL>, StringView const& raw_input, URL const* base_ur
|
|||
}
|
||||
}
|
||||
for (ssize_t i = raw_input.length() - 1; i >= 0; --i) {
|
||||
if (raw_input[i] <= 0x20) {
|
||||
if (0 <= raw_input[i] && raw_input[i] <= 0x20) {
|
||||
--end_index;
|
||||
has_validation_error = true;
|
||||
} else {
|
||||
|
|
|
@ -328,3 +328,12 @@ TEST_CASE(leading_and_trailing_whitespace)
|
|||
EXPECT(url.is_valid());
|
||||
EXPECT_EQ(url.to_string(), "https://foo.com/");
|
||||
}
|
||||
|
||||
TEST_CASE(unicode)
|
||||
{
|
||||
URL url { "http://example.com/_ünicöde_téxt_©" };
|
||||
EXPECT(url.is_valid());
|
||||
EXPECT_EQ(url.path(), "/_ünicöde_téxt_©");
|
||||
EXPECT(url.query().is_null());
|
||||
EXPECT(url.fragment().is_null());
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue