summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Lewis2019-04-04 13:29:32 +0200
committerDenys Vlasenko2019-04-04 15:44:36 +0200
commit93594b1197cf3ae1835eedebbebb2b40ea2a81f7 (patch)
tree91b80f68146a4800fee16e3fa91963ef7b838a1b
parent2b6282117f026cfa2a3e7efee7caa054b6265264 (diff)
downloadbusybox-93594b1197cf3ae1835eedebbebb2b40ea2a81f7.zip
busybox-93594b1197cf3ae1835eedebbebb2b40ea2a81f7.tar.gz
telnetd: Added support for AYT IAC command.
Fixed a TODO in AYT IAC handling by replying back with a NOP. Signed-off-by: Martin Lewis <martin.lewis.x84@gmail.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/telnetd.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/networking/telnetd.c b/networking/telnetd.c
index caef151..bd60c86 100644
--- a/networking/telnetd.c
+++ b/networking/telnetd.c
@@ -249,7 +249,7 @@ safe_write_to_pty_decode_iac(struct tsession *ts)
* IAC SE (240) End of subnegotiation. Treated as NOP.
* IAC NOP (241) NOP. Supported.
* IAC BRK (243) Break. Like serial line break. TODO via tcsendbreak()?
- * IAC AYT (246) Are you there. Send back evidence that AYT was seen. TODO (send NOP back)?
+ * IAC AYT (246) Are you there.
* These don't look useful:
* IAC DM (242) Data mark. What is this?
* IAC IP (244) Suspend, interrupt or abort the process. (Ancient cousin of ^C).
@@ -277,6 +277,13 @@ safe_write_to_pty_decode_iac(struct tsession *ts)
rc = 2;
goto update_and_return;
}
+ if (buf[1] == AYT) {
+ /* Send back evidence that AYT was seen. */
+ buf[1] = NOP;
+ /*rc =*/ safe_write(ts->sockfd_write, buf, 2);
+ rc = 2;
+ goto update_and_return;
+ }
if (buf[1] >= 240 && buf[1] <= 249) {
/* NOP (241). Ignore (putty keepalive, etc) */
/* All other 2-byte commands also treated as NOPs here */