1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:48:14 +00:00

LibHTTP: Return an error if HTTP request URL is not valid UTF-8

This commit is contained in:
Tim Ledbetter 2023-10-05 18:06:10 +01:00 committed by Ali Mohammad Pur
parent 57d7637b59
commit 9fefb434f2
2 changed files with 14 additions and 2 deletions

View file

@ -226,11 +226,22 @@ ErrorOr<HttpRequest, HttpRequest::ParseError> HttpRequest::from_raw_request(Read
request.m_headers = move(headers);
auto url_parts = resource.split_limit('?', 2, SplitBehavior::KeepEmpty);
auto url_part_to_string = [](DeprecatedString const& url_part) -> ErrorOr<String, ParseError> {
auto query_string_or_error = String::from_deprecated_string(url_part);
if (!query_string_or_error.is_error())
return query_string_or_error.release_value();
if (query_string_or_error.error().code() == ENOMEM)
return ParseError::OutOfMemory;
return ParseError::InvalidURL;
};
request.m_url.set_cannot_be_a_base_url(true);
if (url_parts.size() == 2) {
request.m_resource = url_parts[0];
request.m_url.set_paths({ url_parts[0] });
request.m_url.set_query(String::from_deprecated_string(url_parts[1]).release_value_but_fixme_should_propagate_errors());
request.m_url.set_query(TRY(url_part_to_string(url_parts[1])));
} else {
request.m_resource = resource;
request.m_url.set_paths({ resource });