From: Willy Tarreau Date: Tue, 3 Jul 2018 16:10:31 +0000 (-0400) Subject: tools: kwboot: properly quit when read() returns 0 X-Git-Tag: v2018.09-rc2~66^2~1 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=4469bd7b53acea642915e2bf0e3cb5dfa378a47e;p=oweals%2Fu-boot.git tools: kwboot: properly quit when read() returns 0 When kwboot is attached to a terminal which disappears such as one connected via an unplugged USB cable, read() returns 0, making kwboot loop until a key is pressed in the terminal. The only case where read() may return 0 here is when the terminal is closed anyway, so let's properly handle this one and report is similar to other errors. Signed-off-by: Willy Tarreau Signed-off-by: Stefan Roese --- diff --git a/tools/kwboot.c b/tools/kwboot.c index 0a77060288..50ae2b4b77 100644 --- a/tools/kwboot.c +++ b/tools/kwboot.c @@ -182,7 +182,7 @@ kwboot_tty_recv(int fd, void *buf, size_t len, int timeo) } n = read(fd, buf, len); - if (n < 0) + if (n <= 0) goto out; buf = (char *)buf + n; @@ -466,7 +466,7 @@ kwboot_term_pipe(int in, int out, char *quit, int *s) char _buf[128], *buf = _buf; nin = read(in, buf, sizeof(buf)); - if (nin < 0) + if (nin <= 0) return -1; if (quit) {