summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@altlinux.org>2017-05-18 12:28:26 +0300
committerJan Kara <jack@suse.cz>2017-05-18 12:27:19 +0200
commitf1a97618031701ee9561e95ace4c7a52fd5dbd79 (patch)
tree9b27504fef8af252a7764ba6a7670ecea3b6f8e6
parent9f6a3c484ee780b0330a24941419c0a99a10ecf8 (diff)
quotacheck: fix ask_yn UB when fgets returns NULL
Do not use a random value from the stack as an answer when fgets returns NULL, return the default value in the latter case. Signed-off-by: Dmitry V. Levin <ldv@altlinux.org> Signed-off-by: Jan Kara <jack@suse.cz>
-rw-r--r--quotacheck.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/quotacheck.c b/quotacheck.c
index 1675de8..689ceb9 100644
--- a/quotacheck.c
+++ b/quotacheck.c
@@ -600,8 +600,7 @@ int ask_yn(char *q, int def)
printf("%s [%c]: ", q, def ? 'y' : 'n');
fflush(stdout);
- while (1) {
- fgets(a, sizeof(a)-1, stdin);
+ while (fgets(a, sizeof(a)-1, stdin)) {
if (a[0] == '\n')
return def;
if (!strcasecmp(a, "y\n"))
@@ -611,6 +610,7 @@ int ask_yn(char *q, int def)
printf("Illegal answer. Please answer y/n: ");
fflush(stdout);
}
+ return def;
}
/* Do checks and buffer quota file into memory */