summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErnestas Kulik <ernestask@gnome.org>2018-02-02 12:25:44 +0200
committerErnestas Kulik <ernestask@gnome.org>2018-03-24 20:22:22 +0200
commit57664cd25ef39b18bc312cd6fcf2544231d4db9f (patch)
tree36cb9fd2edf0a1051041ac960b7c4db7877b9ef8
parentb395f53efc01b2e304fee5d585f9caf5def1423e (diff)
downloadnautilus-57664cd25ef39b18bc312cd6fcf2544231d4db9f.tar.gz
batch-rename-utilities: properly escape query strings
g_markup_escape_text() replaces reserved characters in HTML into character entities, which is not what Tracker works with. Furthermore, file URI escaping can be avoided if using angle brackets. Fixes https://gitlab.gnome.org/GNOME/nautilus/issues/229
-rw-r--r--src/nautilus-batch-rename-utilities.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/src/nautilus-batch-rename-utilities.c b/src/nautilus-batch-rename-utilities.c
index ded96827a..ae078e6f7 100644
--- a/src/nautilus-batch-rename-utilities.c
+++ b/src/nautilus-batch-rename-utilities.c
@@ -1049,7 +1049,6 @@ check_metadata_for_selection (NautilusBatchRenameDialog *dialog,
GList *selection_metadata;
guint i;
g_autofree gchar *parent_uri = NULL;
- g_autofree gchar *parent_uri_escaped = NULL;
gchar *file_name_escaped;
error = NULL;
@@ -1074,34 +1073,33 @@ check_metadata_for_selection (NautilusBatchRenameDialog *dialog,
"WHERE { ?file a nfo:FileDataObject. ?file nie:url ?url. ");
parent_uri = nautilus_file_get_parent_uri (NAUTILUS_FILE (selection->data));
- parent_uri_escaped = g_markup_escape_text (parent_uri, -1);
g_string_append_printf (query,
- "FILTER(tracker:uri-is-parent('%s', ?url)) ",
- parent_uri_escaped);
+ "FILTER(tracker:uri-is-parent(<%s>, ?url)) ",
+ parent_uri);
for (l = selection; l != NULL; l = l->next)
{
file = NAUTILUS_FILE (l->data);
file_name = nautilus_file_get_name (file);
- file_name_escaped = g_markup_escape_text (file_name, -1);
+ file_name_escaped = tracker_sparql_escape_string (file_name);
if (l == selection)
{
g_string_append_printf (query,
- "FILTER (nfo:fileName(?file) IN ('%s', ",
+ "FILTER (nfo:fileName(?file) IN (\"%s\", ",
file_name_escaped);
}
else if (l->next == NULL)
{
g_string_append_printf (query,
- "'%s')) ",
+ "\"%s\")) ",
file_name_escaped);
}
else
{
g_string_append_printf (query,
- "'%s', ",
+ "\"%s\", ",
file_name_escaped);
}