From 8c097ae84a500eae9c8e4ee21b7b3ea8f8d23259 Mon Sep 17 00:00:00 2001 From: cinap_lenrek Date: Thu, 8 Nov 2018 22:35:45 +0100 Subject: [PATCH] ssh: handle unknown MSG_CHANNE_REQUEST messages --- sys/src/cmd/ssh.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/sys/src/cmd/ssh.c b/sys/src/cmd/ssh.c index 0fce63315..92d8d27b5 100644 --- a/sys/src/cmd/ssh.c +++ b/sys/src/cmd/ssh.c @@ -966,8 +966,9 @@ dispatch(void) if(unpack(recv.r, recv.w-recv.r, "_sb", &s, &n, &b) < 0) break; if(debug) - fprint(2, "%s: ignoring global request %.*s\n", argv0, n, s); - if(b != 0) sendpkt("b", MSG_REQUEST_FAILURE); + fprint(2, "%s: global request: %.*s\n", argv0, n, s); + if(b != 0) + sendpkt("b", MSG_REQUEST_FAILURE); return; case MSG_DISCONNECT: if(unpack(recv.r, recv.w-recv.r, "_us", &c, &s, &n) < 0) @@ -1025,14 +1026,20 @@ dispatch(void) break; if(n != 0 && status == nil) status = smprint("%.*s", n, s); + c = MSG_CHANNEL_SUCCESS; } else if(n == 11 && memcmp(s, "exit-status", n) == 0){ if(unpack(p, recv.w-p, "u", &n) < 0) break; if(n != 0 && status == nil) status = smprint("%d", n); - } else if(debug) { - fprint(2, "%s: channel request: %.*s\n", argv0, n, s); + c = MSG_CHANNEL_SUCCESS; + } else { + if(debug) + fprint(2, "%s: channel request: %.*s\n", argv0, n, s); + c = MSG_CHANNEL_FAILURE; } + if(b != 0) + sendpkt("bu", c, recv.chan); return; case MSG_CHANNEL_EOF: recv.eof = 1;