From 838d586b2505b83566bc23366ee6d93542957f54 Mon Sep 17 00:00:00 2001 From: Valtteri Koskivuori Date: Sun, 18 Jun 2023 02:48:06 +0300 Subject: [PATCH] AK: Fix relative file URL parsing in URLParser The FileSlash state was erroneously copying the base URL host, instead of the base URL path excluding the last path component. This resulted in invalid file URLs. --- AK/URLParser.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/AK/URLParser.cpp b/AK/URLParser.cpp index 0cfb341fd5..644a57bf10 100644 --- a/AK/URLParser.cpp +++ b/AK/URLParser.cpp @@ -553,7 +553,8 @@ URL URLParser::parse(StringView raw_input, Optional const& base_url, Option report_validation_error(); state = State::FileHost; } else if (base_url.has_value() && base_url->m_scheme == "file") { - url->m_host = base_url->m_host; + url->m_paths = base_url->m_paths; + url->m_paths.remove(url->m_paths.size() - 1); auto substring_from_pointer = input.substring_view(iterator - input.begin()).as_string(); if (!starts_with_windows_drive_letter(substring_from_pointer) && is_normalized_windows_drive_letter(base_url->m_paths[0])) url->append_path(base_url->m_paths[0], URL::ApplyPercentEncoding::No);