aboutsummaryrefslogtreecommitdiff
path: root/common/cli_readline.c
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2023-10-01 19:13:14 -0600
committerTom Rini <trini@konsulko.com>2023-10-11 15:43:54 -0400
commit657e14da835298a948eb313feffba6732fe9232e (patch)
tree782dfcacaefb736cd317f6e054efd30860e3f396 /common/cli_readline.c
parente5509ce87b29f773b045200735bec2903b72eed4 (diff)
cli: Terminate the string in cread_line_process_ch()
Rather than relying on the caller, terminate the string inside this function. Do this each time we return, whether input is finished or not. It is not needed when the input is aborted, since the string will be discarded in that case. Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'common/cli_readline.c')
-rw-r--r--common/cli_readline.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/common/cli_readline.c b/common/cli_readline.c
index 62d419bb36..fdb84d9204 100644
--- a/common/cli_readline.c
+++ b/common/cli_readline.c
@@ -263,6 +263,7 @@ int cread_line_process_ch(struct cli_line_state *cls, char ichar)
if (ichar == '\n') {
putc('\n');
+ buf[cls->eol_num] = '\0'; /* terminate the string */
return 0;
}
@@ -413,6 +414,12 @@ int cread_line_process_ch(struct cli_line_state *cls, char ichar)
break;
}
+ /*
+ * keep the string terminated...if we added a char at the end then we
+ * want a \0 after it
+ */
+ buf[cls->eol_num] = '\0';
+
return -EAGAIN;
}
@@ -467,7 +474,6 @@ static int cread_line(const char *const prompt, char *buf, unsigned int *len,
break;
}
*len = cls->eol_num;
- buf[cls->eol_num] = '\0'; /* lose the newline */
if (buf[0] && buf[0] != CREAD_HIST_CHAR)
cread_add_to_hist(buf);