From b3a6044fd8214aa13630486e16b46256648aa478 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Sun, 17 Apr 2022 19:33:09 +0100 Subject: [PATCH] LibWeb: Disallow non-whitespace tokens after "none" in `transform` Before this, a declaration like `transform: none yellow 20;` would be parsed as `transform: none;`. Now it's correctly rejected as invalid. --- Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index b7a9e95f22..aec3bf250f 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -4772,13 +4772,19 @@ RefPtr Parser::parse_text_decoration_line_value(TokenStream Parser::parse_transform_value(Vector const& component_values) { NonnullRefPtrVector transformations; + auto tokens = TokenStream { component_values }; + tokens.skip_whitespace(); + + while (tokens.has_next_token()) { + tokens.skip_whitespace(); + auto& part = tokens.next_token(); - for (auto& part : component_values) { - if (part.is(Token::Type::Whitespace)) - continue; if (part.is(Token::Type::Ident) && part.token().ident().equals_ignoring_case("none")) { if (!transformations.is_empty()) return nullptr; + tokens.skip_whitespace(); + if (tokens.has_next_token()) + return nullptr; return IdentifierStyleValue::create(ValueID::None); }