summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-02-05 22:59:20 -0500
committerMatthias Clasen <mclasen@redhat.com>2021-02-06 16:16:44 -0500
commit5f48764ac8082219de029f59f405b8b483b14aaa (patch)
tree0c2724ea3231ce5654918f0f76d6ade2f71d4be7
parentcc6fcbfc093d17b6df8a9f23131d776c7a7bb89a (diff)
downloadgtk+-5f48764ac8082219de029f59f405b8b483b14aaa.tar.gz
cssfiltervalue: Reject invalid filters
The Filter Effects Spec doesn't allow negative values for most of the filter parameters.
-rw-r--r--gtk/gtkcssfiltervalue.c4
-rw-r--r--testsuite/css/parser/invalid-filter1.css3
-rw-r--r--testsuite/css/parser/invalid-filter1.errors1
-rw-r--r--testsuite/css/parser/invalid-filter1.ref.css0
4 files changed, 6 insertions, 2 deletions
diff --git a/gtk/gtkcssfiltervalue.c b/gtk/gtkcssfiltervalue.c
index eaf11c16b5..c1c281c1e2 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
--- /dev/null
+++ b/testsuite/css/parser/invalid-filter1.ref.css