39 lines
1.3 KiB
Diff
39 lines
1.3 KiB
Diff
From f924897c3f04927d0d28d71b11c4019c9dd7a9f2 Mon Sep 17 00:00:00 2001
|
|
From: Ben Hutchings <ben@decadent.org.uk>
|
|
Date: Sat, 19 Mar 2011 04:11:33 +0000
|
|
Subject: [PATCH] kconfig: Avoid buffer underrun in choice input
|
|
|
|
commit 40aee729b350672c2550640622416a855e27938f ('kconfig: fix default
|
|
value for choice input') fixed some cases where kconfig would select
|
|
the wrong option from a choice with a single valid option and thus
|
|
enter an infinite loop.
|
|
|
|
However, this broke the test for user input of the form 'N?', because
|
|
when kconfig selects the single valid option the input is zero-length
|
|
and the test will read the byte before the input buffer. If this
|
|
happens to contain '?' (as it will in a mips build on Debian unstable
|
|
today) then kconfig again enters an infinite loop.
|
|
|
|
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
|
|
Cc: stable@kernel.org [2.6.17+]
|
|
---
|
|
scripts/kconfig/conf.c | 2 +-
|
|
1 files changed, 1 insertions(+), 1 deletions(-)
|
|
|
|
diff --git a/scripts/kconfig/conf.c b/scripts/kconfig/conf.c
|
|
index 659326c..006ad81 100644
|
|
--- a/scripts/kconfig/conf.c
|
|
+++ b/scripts/kconfig/conf.c
|
|
@@ -332,7 +332,7 @@ static int conf_choice(struct menu *menu)
|
|
}
|
|
if (!child)
|
|
continue;
|
|
- if (line[strlen(line) - 1] == '?') {
|
|
+ if (line[0] && line[strlen(line) - 1] == '?') {
|
|
print_help(child);
|
|
continue;
|
|
}
|
|
--
|
|
1.7.4.1
|
|
|