cli: Correct handling of invalid escape sequences in cread_line()

The second call to cli_ch_process() is in the wrong place, meaning that
the one of the characters of an invalid escape sequence is swallowed
instead of being returned.

Fix the bug and add a test to cover this.

This behaviour matches that of the code before cli_getch() was
introduced. This was verified on the commit before b08e9d4b66 i.e.:

   7d850f85aa ("sandbox: Enable mmc command and legacy images")

Signed-off-by: Simon Glass <sjg@chromium.org>
Reported-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
This commit is contained in:
Simon Glass
2023-03-28 08:34:14 +13:00
committed by Tom Rini
parent 17b45e684a
commit be0169f07e
3 changed files with 48 additions and 4 deletions

View File

@@ -98,8 +98,8 @@ int cli_readline(const char *const prompt);
*
* @prompt: Prompt to display
* @buffer: Place to put the line that is entered
* @timeout: Timeout in milliseconds, 0 if none
* Return: command line length excluding terminator, or -ve on error: of the
* @timeout: Timeout in seconds, 0 if none
* Return: command line length excluding terminator, or -ve on error: if the
* timeout is exceeded (either CONFIG_BOOT_RETRY_TIME or the timeout
* parameter), then -2 is returned. If a break is detected (Ctrl-C) then
* -1 is returned.