Skip to content

Commit

Permalink
Fix buffer underflow when serial peer spews garbage
Browse files Browse the repository at this point in the history
A board I got spews garbage on hard reset. Sometimes that garbage is IAC
and it leads to len here getting negative and the loop eventually
underflows the buf.

Detect and avoid this silently.

Signed-off-by: Ahmad Fatoum <a.fatoum@pengutronix.de>
  • Loading branch information
a3f committed Sep 15, 2018
1 parent a94d4b8 commit ff923a8
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions mux.c
Original file line number Diff line number Diff line change
Expand Up @@ -211,7 +211,7 @@ char *answerback;

static void write_receive_buf(const unsigned char *buf, int len)
{
if (!len)
if (len <= 0)
return;

write(STDOUT_FILENO, buf, len);
Expand Down Expand Up @@ -306,7 +306,7 @@ static int handle_receive_buf(struct ios_ops *ios, unsigned char *buf, int len)
unsigned char *sendbuf = buf;
int i;

while (len) {
while (len > 0) {
switch (*buf) {
case IAC:
/* BUG: this is telnet specific */
Expand Down

0 comments on commit ff923a8

Please sign in to comment.