[gtk/matthiasc/for-master: 6/7] cssfiltervalue: Reject invalid filters




commit cd99e9188f56460b66bb1d8f9301835d4f40b2e1
Author: Matthias Clasen <mclasen redhat com>
Date:   Fri Feb 5 22:59:20 2021 -0500

    cssfiltervalue: Reject invalid filters
    
    The Filter Effects Spec doesn't allow negative values
    for most of the filter parameters.

 gtk/gtkcssfiltervalue.c                      | 4 ++--
 testsuite/css/parser/invalid-filter1.css     | 3 +++
 testsuite/css/parser/invalid-filter1.errors  | 1 +
 testsuite/css/parser/invalid-filter1.ref.css | 0
 4 files changed, 6 insertions(+), 2 deletions(-)
---
diff --git a/gtk/gtkcssfiltervalue.c b/gtk/gtkcssfiltervalue.c
index 859ea89930..158a753a4c 100644
--- a/gtk/gtkcssfiltervalue.c
+++ b/gtk/gtkcssfiltervalue.c
@@ -755,7 +755,7 @@ gtk_css_filter_parse_number (GtkCssParser *parser,
 {
   GtkCssValue **values = data;
 
-  values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_PARSE_PERCENT);
+  values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_NUMBER | GTK_CSS_PARSE_PERCENT | 
GTK_CSS_POSITIVE_ONLY);
   if (values[n] == NULL)
     return 0;
 
@@ -769,7 +769,7 @@ gtk_css_filter_parse_length (GtkCssParser *parser,
 {
   GtkCssValue **values = data;
 
-  values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH);
+  values[n] = _gtk_css_number_value_parse (parser, GTK_CSS_PARSE_LENGTH | GTK_CSS_POSITIVE_ONLY);
   if (values[n] == NULL)
     return 0;
 
diff --git a/testsuite/css/parser/invalid-filter1.css b/testsuite/css/parser/invalid-filter1.css
new file mode 100644
index 0000000000..52580b853e
--- /dev/null
+++ b/testsuite/css/parser/invalid-filter1.css
@@ -0,0 +1,3 @@
+a {
+  filter: blur(-1px);
+}
diff --git a/testsuite/css/parser/invalid-filter1.errors b/testsuite/css/parser/invalid-filter1.errors
new file mode 100644
index 0000000000..b91e500d69
--- /dev/null
+++ b/testsuite/css/parser/invalid-filter1.errors
@@ -0,0 +1 @@
+invalid-filter1.css:2:20-21: error: GTK_CSS_PARSER_ERROR_SYNTAX
diff --git a/testsuite/css/parser/invalid-filter1.ref.css b/testsuite/css/parser/invalid-filter1.ref.css
new file mode 100644
index 0000000000..e69de29bb2


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]