summaryrefslogtreecommitdiff
path: root/source3/rpc_server
diff options
context:
space:
mode:
authorRalph Boehme <slow@samba.org>2017-03-15 13:38:19 +0100
committerJeremy Allison <jra@samba.org>2018-07-10 23:17:20 +0200
commit621349d559053e86064d2502d114d107914c189f (patch)
tree8f5ba7dae9fbd1bb3cd5cbd9d5915b59f02920d9 /source3/rpc_server
parent1a9d6ce58939678f88b3081fb91c3309ff3cddb7 (diff)
downloadsamba-621349d559053e86064d2502d114d107914c189f.tar.gz
s3/rpc_server: Character Encode Spotlight Queries
Fix path escaping in Spotlight so paths with spaces or special characters can be properly matched to tracker paths. Bug: https://bugzilla.samba.org/show_bug.cgi?id=12688 Based-on-a-patch-from: Mike M Pestorich <mmpestorich@gmail.com> (similar to github.com/netatalk/netatalk/commit/90aa43d) Signed-off-by: Ralph Boehme <slow@samba.org> Reviewed-by: Jeremy Allison <jra@samba.org> Autobuild-User(master): Jeremy Allison <jra@samba.org> Autobuild-Date(master): Tue Jul 10 23:17:20 CEST 2018 on sn-devel-144
Diffstat (limited to 'source3/rpc_server')
-rw-r--r--source3/rpc_server/mdssvc/mdssvc.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/source3/rpc_server/mdssvc/mdssvc.c b/source3/rpc_server/mdssvc/mdssvc.c
index 9be0cc48877..5a63d379738 100644
--- a/source3/rpc_server/mdssvc/mdssvc.c
+++ b/source3/rpc_server/mdssvc/mdssvc.c
@@ -1136,6 +1136,8 @@ static bool slrpc_open_query(struct mds_ctx *mds_ctx,
struct sl_query *slq = NULL;
int result;
char *querystring;
+ char *scope = NULL;
+ char *escaped_scope = NULL;
array = dalloc_zero(reply, sl_array_t);
if (array == NULL) {
@@ -1214,12 +1216,20 @@ static bool slrpc_open_query(struct mds_ctx *mds_ctx,
goto error;
}
- slq->path_scope = dalloc_get(path_scope, "char *", 0);
- if (slq->path_scope == NULL) {
+ scope = dalloc_get(path_scope, "char *", 0);
+ if (scope == NULL) {
+ goto error;
+ }
+
+ escaped_scope = g_uri_escape_string(scope,
+ G_URI_RESERVED_CHARS_ALLOWED_IN_PATH,
+ TRUE);
+ if (escaped_scope == NULL) {
goto error;
}
- slq->path_scope = talloc_strdup(slq, slq->path_scope);
+ slq->path_scope = talloc_strdup(slq, escaped_scope);
+ g_free(escaped_scope);
if (slq->path_scope == NULL) {
goto error;
}