summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garnacho <carlosg@gnome.org>2020-08-30 19:41:14 +0200
committerCarlos Garnacho <carlosg@gnome.org>2020-08-30 23:31:52 +0200
commit8a577d6a3efb822fb04d8f9be592d79ed7525b4c (patch)
tree10e034929f333777fa1e4207af653748f9fd6534
parentfe45e06bfb74eaeedacbdc0ee3bda9159b61e74c (diff)
downloadtracker-8a577d6a3efb822fb04d8f9be592d79ed7525b4c.tar.gz
libtracker-data: Plug leak
The graph token was consistently being possibly leaked, if it had to be used again further on in the same query string.
-rw-r--r--src/libtracker-data/tracker-sparql.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/src/libtracker-data/tracker-sparql.c b/src/libtracker-data/tracker-sparql.c
index 5a2795af9..5b2f9ebf2 100644
--- a/src/libtracker-data/tracker-sparql.c
+++ b/src/libtracker-data/tracker-sparql.c
@@ -3896,6 +3896,7 @@ translate_Clear (TrackerSparql *sparql,
break;
}
+ tracker_token_unset (&sparql->current_state.graph);
g_list_free (graphs);
return handle_silent (silent, inner_error, error);
@@ -3956,6 +3957,7 @@ translate_Drop (TrackerSparql *sparql,
}
g_list_free_full (graphs, g_free);
+ tracker_token_unset (&sparql->current_state.graph);
return handle_silent (silent, inner_error, error);
}
@@ -4001,9 +4003,13 @@ translate_Create (TrackerSparql *sparql,
&inner_error))
goto error;
+ tracker_token_unset (&sparql->current_state.graph);
+
return TRUE;
error:
+ tracker_token_unset (&sparql->current_state.graph);
+
return handle_silent (silent, inner_error, error);
}
@@ -4024,11 +4030,13 @@ translate_Add (TrackerSparql *sparql,
_call_rule (sparql, NAMED_RULE_GraphOrDefault, error);
source = g_strdup (tracker_token_get_idstring (&sparql->current_state.graph));
+ tracker_token_unset (&sparql->current_state.graph);
_expect (sparql, RULE_TYPE_LITERAL, LITERAL_TO);
_call_rule (sparql, NAMED_RULE_GraphOrDefault, error);
destination = g_strdup (tracker_token_get_idstring (&sparql->current_state.graph));
+ tracker_token_unset (&sparql->current_state.graph);
if (g_strcmp0 (source, destination) == 0) {
g_free (source);
@@ -4094,11 +4102,13 @@ translate_Move (TrackerSparql *sparql,
_call_rule (sparql, NAMED_RULE_GraphOrDefault, error);
source = g_strdup (tracker_token_get_idstring (&sparql->current_state.graph));
+ tracker_token_unset (&sparql->current_state.graph);
_expect (sparql, RULE_TYPE_LITERAL, LITERAL_TO);
_call_rule (sparql, NAMED_RULE_GraphOrDefault, error);
destination = g_strdup (tracker_token_get_idstring (&sparql->current_state.graph));
+ tracker_token_unset (&sparql->current_state.graph);
if (g_strcmp0 (source, destination) == 0) {
g_free (source);
@@ -4174,6 +4184,7 @@ translate_Copy (TrackerSparql *sparql,
g_assert (!tracker_token_is_empty (&sparql->current_state.graph) ||
sparql->current_state.graph_op == GRAPH_OP_DEFAULT);
source = g_strdup (tracker_token_get_idstring (&sparql->current_state.graph));
+ tracker_token_unset (&sparql->current_state.graph);
_expect (sparql, RULE_TYPE_LITERAL, LITERAL_TO);
@@ -4181,6 +4192,7 @@ translate_Copy (TrackerSparql *sparql,
g_assert (!tracker_token_is_empty (&sparql->current_state.graph) ||
sparql->current_state.graph_op == GRAPH_OP_DEFAULT);
destination = g_strdup (tracker_token_get_idstring (&sparql->current_state.graph));
+ tracker_token_unset (&sparql->current_state.graph);
if (g_strcmp0 (source, destination) == 0) {
g_free (source);