From 003f7fdd96e3c3e2588de64a69c889f848e912ec Mon Sep 17 00:00:00 2001 From: Carlos Garnacho Date: Sun, 5 Jun 2016 01:44:12 +0200 Subject: libtracker-data: Ensure variables are defined in aggregate expressions Look those up and error out if they are undefined. https://bugzilla.gnome.org/show_bug.cgi?id=759361 --- src/libtracker-data/tracker-sparql-expression.vala | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/libtracker-data/tracker-sparql-expression.vala b/src/libtracker-data/tracker-sparql-expression.vala index 96270cfc5..210fdff84 100644 --- a/src/libtracker-data/tracker-sparql-expression.vala +++ b/src/libtracker-data/tracker-sparql-expression.vala @@ -1687,7 +1687,17 @@ class Tracker.Sparql.Expression : Object { if (accept (SparqlTokenType.DISTINCT)) { sql.append ("DISTINCT "); } + + bool is_var = (current () == SparqlTokenType.VAR); var optype = translate_expression (sql); + + if (is_var) { + var variable = context.get_variable (get_last_string ().substring (1)); + if (variable.binding == null) { + throw get_error ("use of undefined variable `%s'".printf (variable.name)); + } + } + expect (SparqlTokenType.CLOSE_PARENS); return optype; } -- cgit v1.2.1