diff options
author | Dmitry V. Levin <ldv@altlinux.org> | 2017-05-18 12:28:26 +0300 |
---|---|---|
committer | Jan Kara <jack@suse.cz> | 2017-05-18 12:27:19 +0200 |
commit | f1a97618031701ee9561e95ace4c7a52fd5dbd79 (patch) | |
tree | 9b27504fef8af252a7764ba6a7670ecea3b6f8e6 | |
parent | 9f6a3c484ee780b0330a24941419c0a99a10ecf8 (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.c | 4 |
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 */ |