diff --git a/Tests/LibWeb/Text/expected/URL/search-params-with-invalid-utf8.txt b/Tests/LibWeb/Text/expected/URL/search-params-with-invalid-utf8.txt new file mode 100644 index 00000000000..30749baeee3 --- /dev/null +++ b/Tests/LibWeb/Text/expected/URL/search-params-with-invalid-utf8.txt @@ -0,0 +1,2 @@ +key equals = true +value equals = true diff --git a/Tests/LibWeb/Text/input/URL/search-params-with-invalid-utf8.html b/Tests/LibWeb/Text/input/URL/search-params-with-invalid-utf8.html new file mode 100644 index 00000000000..4438a6c850c --- /dev/null +++ b/Tests/LibWeb/Text/input/URL/search-params-with-invalid-utf8.html @@ -0,0 +1,10 @@ + + diff --git a/Userland/Libraries/LibWeb/DOMURL/URLSearchParams.cpp b/Userland/Libraries/LibWeb/DOMURL/URLSearchParams.cpp index b84347f7c85..cb8452b882d 100644 --- a/Userland/Libraries/LibWeb/DOMURL/URLSearchParams.cpp +++ b/Userland/Libraries/LibWeb/DOMURL/URLSearchParams.cpp @@ -115,8 +115,8 @@ ErrorOr> url_decode(StringView input) auto space_decoded_name = name.replace("+"sv, " "sv, ReplaceMode::All); // 5. Let nameString and valueString be the result of running UTF-8 decode without BOM on the percent-decoding of name and value, respectively. - auto name_string = TRY(String::from_byte_string(URL::percent_decode(space_decoded_name))); - auto value_string = TRY(String::from_byte_string(URL::percent_decode(value))); + auto name_string = String::from_utf8_with_replacement_character(URL::percent_decode(space_decoded_name)); + auto value_string = String::from_utf8_with_replacement_character(URL::percent_decode(value)); TRY(output.try_empend(move(name_string), move(value_string))); }