[CSS Parser] Fix dashboard region parsing
authorhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Dec 2016 04:46:52 +0000 (04:46 +0000)
committerhyatt@apple.com <hyatt@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 6 Dec 2016 04:46:52 +0000 (04:46 +0000)
https://bugs.webkit.org/show_bug.cgi?id=165456

Reviewed by Zalan Bujtas.

* css/parser/CSSPropertyParser.cpp:
(WebCore::consumeWebkitDashboardRegion):
Make sure to reject whitespace by itself as well as unclosed dashboard-region functions.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@209384 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/css/parser/CSSPropertyParser.cpp

index 00149e9..6db6dd2 100644 (file)
@@ -1,5 +1,16 @@
 2016-12-05  Dave Hyatt  <hyatt@apple.com>
 
+        [CSS Parser] Fix dashboard region parsing
+        https://bugs.webkit.org/show_bug.cgi?id=165456
+
+        Reviewed by Zalan Bujtas.
+
+        * css/parser/CSSPropertyParser.cpp:
+        (WebCore::consumeWebkitDashboardRegion):
+        Make sure to reject whitespace by itself as well as unclosed dashboard-region functions.
+
+2016-12-05  Dave Hyatt  <hyatt@apple.com>
+
         [CSS Parser] Properly reject large numeric values
         https://bugs.webkit.org/show_bug.cgi?id=165455
 
index a758a2f..4d072c9 100644 (file)
@@ -3610,6 +3610,9 @@ static RefPtr<CSSValue> consumeTextEmphasisPosition(CSSParserTokenRange& range)
 
 static RefPtr<CSSValue> consumeWebkitDashboardRegion(CSSParserTokenRange& range, CSSParserMode mode)
 {
+    if (range.atEnd())
+        return nullptr;
+    
     if (range.peek().id() == CSSValueNone)
         return consumeIdent(range);
     
@@ -3632,7 +3635,9 @@ static RefPtr<CSSValue> consumeWebkitDashboardRegion(CSSParserTokenRange& range,
         
         CSSParserTokenRange rangeCopy = range;
         CSSParserTokenRange args = consumeFunction(rangeCopy);
-        
+        if (rangeCopy.end() == args.end())
+            return nullptr; // No ) was found. Be strict about this, since tests are.
+
         // First arg is a label.
         if (args.peek().type() != IdentToken)
             return nullptr;