From: Denys Vlasenko Date: Thu, 13 Oct 2016 14:17:06 +0000 (+0200) Subject: telnetd: ifdef out a buggy error handling code path X-Git-Tag: 1_26_0~150 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=662634b82902afa84a8c978c259fa0bbd7bc8c09;p=oweals%2Fbusybox.git telnetd: ifdef out a buggy error handling code path Here, not handling the error is would just eat one input 0xff char. Correct handling would need even more corner case handling, as-is buggy handling corrupts the buffer. Since we just been told by kernel that pty is ready, EAGAIN should not be happening here anyway. function old new delta telnetd_main 1798 1785 -13 Signed-off-by: Denys Vlasenko --- diff --git a/networking/telnetd.c b/networking/telnetd.c index 1de3abcc7..303ef1be7 100644 --- a/networking/telnetd.c +++ b/networking/telnetd.c @@ -192,8 +192,16 @@ safe_write_to_pty_decode_iac(struct tsession *ts) /* Literal 255 (emacs M-DEL) */ //bb_error_msg("255!"); rc = safe_write(ts->ptyfd, &buf[1], 1); + /* + * If we went through buffered_IAC_for_pty==1 path, + * bailing out on error like below messes up the buffer. + * EAGAIN is highly unlikely here, other errors will be + * repeated on next write, let's just skip error check. + */ +#if 0 if (rc <= 0) return rc; +#endif rc = 2; goto update_and_return; }