[tracker/wip/carlosg/with-fix] libtracker-data: Unset graph after Modify clause




commit 8ccb230cd9335fdbce548cd375b9ef84ee7e75e3
Author: Carlos Garnacho <carlosg gnome org>
Date:   Thu Oct 1 01:07:44 2020 +0200

    libtracker-data: Unset graph after Modify clause
    
    If the Modify clause sets a graph via 'WITH' the graph token remains
    but the solution underneath gets freed. That means the graph token's
    literal is kept "set" but containing garbage, and may wreak havoc if
    there are more Update clauses in the same update string that don't
    specify a graph, as that garbage value will be used. This may lead
    to warnings, crashes, and bogus graph databases being created. Eek.
    
    The 'WITH' graph is not meant to be carried over, so ensure it gets
    unset after dealing with the Modify clause.

 src/libtracker-data/tracker-sparql.c | 2 ++
 1 file changed, 2 insertions(+)
---
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 5e26b2f28..2ff43d045 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -4572,6 +4572,8 @@ translate_Modify (TrackerSparql  *sparql,
                retval = iterate_solution (sparql, solution, insert, error);
        }
 
+       tracker_token_unset (&sparql->current_state->graph);
+
        tracker_solution_free (solution);
 
        return retval;


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