From 965bd00cf3482a2e62fae59e98883b498ba2b7e9 Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Mon, 4 Dec 2023 08:54:40 -0500 Subject: [PATCH] LibWebView: Avoid trying to break a schemeless URL into renderable parts --- Tests/LibWebView/TestWebViewURL.cpp | 4 ++++ Userland/Libraries/LibWebView/URL.cpp | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Tests/LibWebView/TestWebViewURL.cpp b/Tests/LibWebView/TestWebViewURL.cpp index 3b5ca7e567..6267c66c16 100644 --- a/Tests/LibWebView/TestWebViewURL.cpp +++ b/Tests/LibWebView/TestWebViewURL.cpp @@ -24,6 +24,10 @@ TEST_CASE(invalid_url) EXPECT(!WebView::break_url_into_parts(":/"sv).has_value()); EXPECT(!WebView::break_url_into_parts("://"sv).has_value()); + EXPECT(!WebView::break_url_into_parts("/"sv).has_value()); + EXPECT(!WebView::break_url_into_parts("//"sv).has_value()); + EXPECT(!WebView::break_url_into_parts("/h"sv).has_value()); + EXPECT(!WebView::break_url_into_parts("f"sv).has_value()); EXPECT(!WebView::break_url_into_parts("fi"sv).has_value()); EXPECT(!WebView::break_url_into_parts("fil"sv).has_value()); diff --git a/Userland/Libraries/LibWebView/URL.cpp b/Userland/Libraries/LibWebView/URL.cpp index 7df85d15cd..513e095ae1 100644 --- a/Userland/Libraries/LibWebView/URL.cpp +++ b/Userland/Libraries/LibWebView/URL.cpp @@ -144,7 +144,11 @@ Optional break_url_into_parts(StringView url_string) if (!url.is_valid()) return {}; - auto scheme_length = url.scheme().bytes_as_string_view().length(); + auto const& scheme = url.scheme(); + auto scheme_length = scheme.bytes_as_string_view().length(); + + if (!url_string.starts_with(scheme)) + return {}; if (!url_string.substring_view(scheme_length).starts_with("://"sv)) return {};