diff options
author | Carlos Garnacho <carlosg@gnome.org> | 2020-10-01 01:07:44 +0200 |
---|---|---|
committer | Carlos Garnacho <carlosg@gnome.org> | 2020-10-01 12:08:47 +0200 |
commit | 8ccb230cd9335fdbce548cd375b9ef84ee7e75e3 (patch) | |
tree | d9db5b01d84f285ba5f17b7feb1c4408d49ee15a | |
parent | 4405523d7947c1076d0abbb51365bf5506060eb3 (diff) | |
download | tracker-8ccb230cd9335fdbce548cd375b9ef84ee7e75e3.tar.gz |
libtracker-data: Unset graph after Modify clausewip/carlosg/with-fix
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.
-rw-r--r-- | src/libtracker-data/tracker-sparql.c | 2 |
1 files changed, 2 insertions, 0 deletions
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; |