jcs
/subtext
/amendments
/637
telnet: Fix some corner cases, add rxvt as vt100 terminal
jcs made amendment 637 4 days ago
--- telnet.c Fri Sep 18 22:24:47 2026
+++ telnet.c Fri Sep 18 22:51:21 2026
@@ -130,11 +130,12 @@ static char udp_ban_send_buf[16];
/* terminals that will have vt100 set by default */
static const char * vt100_terms[] = {
"ansi",
+ "rxvt",
+ "screen",
"syncterm",
- "xterm",
"tmux",
- "screen",
"vt100",
+ "xterm",
NULL,
};
@@ -468,10 +469,11 @@ telnet_input(struct session *session)
session->ibuflen);
session->ibufoff = 0;
}
+ if (session->ibuflen + session->ibufoff >=
+ sizeof(session->ibuf))
+ return 0;
rlen = sizeof(session->ibuf) - session->ibuflen -
session->ibufoff;
- if (rlen == 0)
- return 0;
}
error = _TCPRcv(&node->rcv_pb, node->stream,
@@ -817,6 +819,8 @@ telnet_escape_output(struct session *session)
return 0;
if (session->obuflen == 1 && session->obuf[0] != IAC) {
+ if (node->obuflen >= sizeof(node->obuf))
+ return 0;
node->obuf[node->obuflen++] = session->obuf[0];
session->obuflen = 0;
} else if (session->direct_output) {
@@ -1004,6 +1008,7 @@ telnet_print_busy(struct telnet_node *node)
if (data[n] == '\r' && data[n + 1] != '\n')
node->obuf[olen++] = '\n';
}
+ len = olen;
} else {
len = snprintf((char *)&node->obuf, sizeof(node->obuf),
"No free nodes, please call back later.\r\n");