From 36015e8c0e075b698eb69ea07d34bd6fe27da55e Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 2 Jul 2011 17:17:53 +0200 Subject: [PATCH] Fix client redirection and execute for non-ASCII characters The client rejects unauthorized redirection and execute. Its authorized check always fails for arguments with non-ASCII characters. The culprit is ring_search(): It compares plain char to unsigned char, which breaks when char is signed. Believed to be broken in commit 8b7d0b91, v4.3.11. Note that non-ASCII characters only work in UTF-8 sessions. In ASCII sessions, the server replaces them, and the authorized check fails. Works as designed. --- src/client/ringbuf.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/client/ringbuf.c b/src/client/ringbuf.c index f26e712f5..a27615ac5 100644 --- a/src/client/ringbuf.c +++ b/src/client/ringbuf.c @@ -159,7 +159,8 @@ ring_search(struct ring *r, char *s) size_t i, j; for (i = r->cons; i + len <= r->prod; i++) { - for (j = 0; j < len && s[j] == r->buf[(i + j) % RING_SIZE]; j++) ; + for (j = 0; s[j] && s[j] == (char)r->buf[(i + j) % RING_SIZE]; j++) + ; if (!s[j]) return i - r->cons; } -- 2.43.0