|
|
68542f5 |
From f1a97618031701ee9561e95ace4c7a52fd5dbd79 Mon Sep 17 00:00:00 2001
|
|
|
68542f5 |
From: "Dmitry V. Levin" <ldv@altlinux.org>
|
|
|
68542f5 |
Date: Thu, 18 May 2017 12:28:26 +0300
|
|
|
68542f5 |
Subject: [PATCH] quotacheck: fix ask_yn UB when fgets returns NULL
|
|
|
68542f5 |
MIME-Version: 1.0
|
|
|
68542f5 |
Content-Type: text/plain; charset=UTF-8
|
|
|
68542f5 |
Content-Transfer-Encoding: 8bit
|
|
|
68542f5 |
|
|
|
68542f5 |
Do not use a random value from the stack as an answer when fgets
|
|
|
68542f5 |
returns NULL, return the default value in the latter case.
|
|
|
68542f5 |
|
|
|
68542f5 |
Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
|
|
|
68542f5 |
Signed-off-by: Jan Kara <jack@suse.cz>
|
|
|
68542f5 |
Signed-off-by: Petr Písař <ppisar@redhat.com>
|
|
|
68542f5 |
---
|
|
|
68542f5 |
quotacheck.c | 4 ++--
|
|
|
68542f5 |
1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
68542f5 |
|
|
|
68542f5 |
diff --git a/quotacheck.c b/quotacheck.c
|
|
|
68542f5 |
index 1675de8..689ceb9 100644
|
|
|
68542f5 |
--- a/quotacheck.c
|
|
|
68542f5 |
+++ b/quotacheck.c
|
|
|
68542f5 |
@@ -600,8 +600,7 @@ int ask_yn(char *q, int def)
|
|
|
68542f5 |
|
|
|
68542f5 |
printf("%s [%c]: ", q, def ? 'y' : 'n');
|
|
|
68542f5 |
fflush(stdout);
|
|
|
68542f5 |
- while (1) {
|
|
|
68542f5 |
- fgets(a, sizeof(a)-1, stdin);
|
|
|
68542f5 |
+ while (fgets(a, sizeof(a)-1, stdin)) {
|
|
|
68542f5 |
if (a[0] == '\n')
|
|
|
68542f5 |
return def;
|
|
|
68542f5 |
if (!strcasecmp(a, "y\n"))
|
|
|
68542f5 |
@@ -611,6 +610,7 @@ int ask_yn(char *q, int def)
|
|
|
68542f5 |
printf("Illegal answer. Please answer y/n: ");
|
|
|
68542f5 |
fflush(stdout);
|
|
|
68542f5 |
}
|
|
|
68542f5 |
+ return def;
|
|
|
68542f5 |
}
|
|
|
68542f5 |
|
|
|
68542f5 |
/* Do checks and buffer quota file into memory */
|
|
|
68542f5 |
--
|
|
|
68542f5 |
2.9.4
|
|
|
68542f5 |
|