From f79179975d5e0a92191000708e0375b77eac051a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Thu, 19 Jan 2017 21:36:13 +0100 Subject: [PATCH] bfs: Query parser needs to filter out escape char. * When escaping operator/quote characters, the character was properly ignored. However, the escape char was left in the string which altered the query. * This fixes bug #10976. --- src/add-ons/kernel/file_systems/bfs/Query.cpp | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/add-ons/kernel/file_systems/bfs/Query.cpp b/src/add-ons/kernel/file_systems/bfs/Query.cpp index 93be7e19e8..7cd5003657 100644 --- a/src/add-ons/kernel/file_systems/bfs/Query.cpp +++ b/src/add-ons/kernel/file_systems/bfs/Query.cpp @@ -757,7 +757,16 @@ Equation::_CopyString(char* start, char* end) if (copy == NULL) return NULL; - memcpy(copy, start, length - 1); + // Filter out remaining escaping slashes + for (int32 i = 0; i < length; i++) { + char c = start++[0]; + if (c == '\\' && i < length) { + length--; + i--; + continue; + } + copy[i] = c; + } copy[length - 1] = '\0'; return copy;