From 1d55437a768967aa04c40a30c7fe21cda62bb8b4 Mon Sep 17 00:00:00 2001 From: Simon Wanner Date: Sun, 20 Mar 2022 21:22:54 +0100 Subject: [PATCH] LibWeb: Ignore invalid encodings in Content-Type headers --- Userland/Libraries/LibWeb/Loader/Resource.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Userland/Libraries/LibWeb/Loader/Resource.cpp b/Userland/Libraries/LibWeb/Loader/Resource.cpp index 123909380c..0ccf8b49df 100644 --- a/Userland/Libraries/LibWeb/Loader/Resource.cpp +++ b/Userland/Libraries/LibWeb/Loader/Resource.cpp @@ -8,6 +8,7 @@ #include #include #include +#include #include #include @@ -64,6 +65,11 @@ static String mime_type_from_content_type(const String& content_type) return content_type; } +static bool is_valid_encoding(String const& encoding) +{ + return TextCodec::decoder_for(encoding); +} + void Resource::did_load(Badge, ReadonlyBytes data, const HashMap& headers, Optional status_code) { VERIFY(!m_loaded); @@ -98,8 +104,8 @@ void Resource::did_load(Badge, ReadonlyBytes data, const HashMap m_encoding = {}; if (content_type.has_value()) { auto encoding = encoding_from_content_type(content_type.value()); - if (encoding.has_value()) { - dbgln_if(RESOURCE_DEBUG, "Set encoding '{}' from Content-Type", encoding.has_value()); + if (encoding.has_value() && is_valid_encoding(encoding.value())) { + dbgln_if(RESOURCE_DEBUG, "Set encoding '{}' from Content-Type", encoding.value()); m_encoding = encoding.value(); } }