Fixes: #8702
Backport: firefly
Only decode + characters to spaces if we're in a query argument. The +
query argument. The + => ' ' translation is not correct for
file/directory names.
Resolves http://tracker.ceph.com/issues/8702
Reviewed-by: Yehuda Sadeh <yehuda@redhat.com>
Signed-off-by: Brian Rak <dn@devicenull.org>
int pos = 0;
char c;
+ bool in_query = false;
while (*src) {
if (*src != '%') {
- if (*src != '+') {
- dest[pos++] = *src++;
+ if (!in_query || *src != '+') {
+ if (*src == '?') in_query = true;
+ dest[pos++] = *src++;
} else {
- dest[pos++] = ' ';
- ++src;
+ dest[pos++] = ' ';
+ ++src;
}
} else {
src++;