summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorchl <chl@openbsd.org>2007-09-25 09:51:48 +0000
committerchl <chl@openbsd.org>2007-09-25 09:51:48 +0000
commitcda74bce030ae9ded83cfb2ae4c35c2f97309127 (patch)
treeb09bbc1596015845c9ea11b67f5ee7d91d1aa49f
parentmake route flush obey the rtable ID (diff)
downloadwireguard-openbsd-cda74bce030ae9ded83cfb2ae4c35c2f97309127.tar.xz
wireguard-openbsd-cda74bce030ae9ded83cfb2ae4c35c2f97309127.zip
check fgets return value
use sizeof input intead of BUFSIZ remove unneeded feof handle empty strings returned by fgets properly remove newline and white space at the end of buffer with help and ok ray@
-rw-r--r--sbin/restore/interactive.c18
1 files changed, 9 insertions, 9 deletions
diff --git a/sbin/restore/interactive.c b/sbin/restore/interactive.c
index 860de17dab2..3eb1eb99511 100644
--- a/sbin/restore/interactive.c
+++ b/sbin/restore/interactive.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: interactive.c,v 1.24 2007/09/02 15:19:25 deraadt Exp $ */
+/* $OpenBSD: interactive.c,v 1.25 2007/09/25 09:51:48 chl Exp $ */
/* $NetBSD: interactive.c,v 1.10 1997/03/19 08:42:52 lukem Exp $ */
/*
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)interactive.c 8.3 (Berkeley) 9/13/94";
#else
-static const char rcsid[] = "$OpenBSD: interactive.c,v 1.24 2007/09/02 15:19:25 deraadt Exp $";
+static const char rcsid[] = "$OpenBSD: interactive.c,v 1.25 2007/09/25 09:51:48 chl Exp $";
#endif
#endif /* not lint */
@@ -327,13 +327,13 @@ getcmd(char *curdir, char *cmd, size_t cmdlen, char *name, size_t namelen,
do {
(void)fprintf(stderr, "%s > ", __progname);
(void)fflush(stderr);
- (void)fgets(input, BUFSIZ, terminal);
- } while (!feof(terminal) && input[0] == '\n');
- if (feof(terminal)) {
- (void)strlcpy(cmd, "quit", cmdlen);
- return;
- }
- for (cp = &input[strlen(input) - 2]; *cp == ' ' || *cp == '\t'; cp--)
+ if (fgets(input, sizeof input, terminal) == NULL) {
+ (void)strlcpy(cmd, "quit", cmdlen);
+ return;
+ }
+ } while (input[0] == '\n' || input[0] == '\0');
+ for (cp = &input[strlen(input) - 1];
+ cp >= input && (*cp == ' ' || *cp == '\t' || *cp == '\n'); cp--)
/* trim off trailing white space and newline */;
*++cp = '\0';
/*