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(); } }