diff options
author | Ralph Boehme <slow@samba.org> | 2017-03-15 13:38:19 +0100 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2018-07-10 23:17:20 +0200 |
commit | 621349d559053e86064d2502d114d107914c189f (patch) | |
tree | 8f5ba7dae9fbd1bb3cd5cbd9d5915b59f02920d9 /source3/rpc_server | |
parent | 1a9d6ce58939678f88b3081fb91c3309ff3cddb7 (diff) | |
download | samba-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.c | 16 |
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; } |