From: Todd C. Miller Date: Sat, 8 Nov 2008 15:30:42 +0000 (+0000) Subject: Treat EOF w/o newline as an error. X-Git-Tag: SUDO_1_7_0~44 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=80ca3a9723cb7be3b4390a260d8c369aa27d94cb;p=sudo Treat EOF w/o newline as an error. --- diff --git a/tgetpass.c b/tgetpass.c index 119114867..d0e3d840f 100644 --- a/tgetpass.c +++ b/tgetpass.c @@ -282,20 +282,24 @@ getln(fd, buf, bufsiz) char *buf; size_t bufsiz; { - char c, *cp; - ssize_t nr; + ssize_t nr = -1; + char *cp = buf; + char c = '\0'; if (bufsiz == 0) { errno = EINVAL; return(NULL); /* sanity */ } - cp = buf; - nr = -1; - while (--bufsiz && (nr = read(fd, &c, 1)) == 1 && c != '\n' && c != '\r') + while (--bufsiz) { + nr = read(fd, &c, 1); + if (nr != 1 || c == '\n' || c == '\r') + break; *cp++ = c; + } *cp = '\0'; - return(nr == -1 ? NULL : buf); + + return(nr == 1 ? buf : NULL); } static void