[PATCH] common: readline: Fix always true test
Andrew Goodbody
andrew.goodbody at linaro.org
Wed Jun 25 11:50:30 CEST 2025
The variable base is unsigned so >= 0 is always true. Fix this test
so that it is actually useful. The fix prevents the code from causing
a segfault in the case where Ctrl-w is pressed on a line consisting
only of spaces.
Fixes: dcc18ce0dbaf ("cli: Implement delete-word in cread_line()")
Signed-off-by: Andrew Goodbody <andrew.goodbody at linaro.org>
---
This bug was found using Smatch
---
common/cli_readline.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/common/cli_readline.c b/common/cli_readline.c
index 4e6797a1944..0cb43e62000 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -332,8 +332,8 @@ int cread_line_process_ch(struct cli_line_state *cls, char ichar)
if (cls->num) {
uint base, wlen;
- for (base = cls->num - 1;
- base >= 0 && buf[base] == ' ';)
+ for (base = cls->num;
+ base > 0 && buf[base - 1] == ' ';)
base--;
for (; base > 0 && buf[base - 1] != ' ';)
base--;
---
base-commit: 903eb123236ccbd8ef05d43507a2a910b785bd56
change-id: 20250624-readline_fix-4ea90584023d
Best regards,
--
Andrew Goodbody <andrew.goodbody at linaro.org>
More information about the U-Boot
mailing list