AmendHub

Download:

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");