From 6c3ceb92845a3c930e02b9244c961cdb8d5b31ff Mon Sep 17 00:00:00 2001 From: Callum Law Date: Sun, 25 May 2025 16:00:28 +1200 Subject: [PATCH] LibWeb: Don't crash when handling invalid HTTP status codes Example crash: https://wpt.live/fetch/h1-parsing/status-code.window.html There is still work to make the above tests pass. --- Libraries/LibWeb/Loader/ResourceLoader.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/Libraries/LibWeb/Loader/ResourceLoader.cpp b/Libraries/LibWeb/Loader/ResourceLoader.cpp index 5deb0abfa38..e90c55245e7 100644 --- a/Libraries/LibWeb/Loader/ResourceLoader.cpp +++ b/Libraries/LibWeb/Loader/ResourceLoader.cpp @@ -443,8 +443,12 @@ void ResourceLoader::load(LoadRequest& request, GC::Root succes else error_builder.append("Load failed"sv); - if (status_code.has_value() && *status_code > 0) - error_builder.appendff(" (status: {} {})", *status_code, HTTP::HttpResponse::reason_phrase_for_code(*status_code)); + if (status_code.has_value()) { + if (*status_code >= 100 && *status_code <= 599) + error_builder.appendff(" (status: {} {})", *status_code, HTTP::HttpResponse::reason_phrase_for_code(*status_code)); + else + error_builder.appendff(" (status: {})", *status_code); + } log_failure(request, error_builder.string_view()); if (error_callback)