[PATCH] cli: Consume invalid escape sequences early
Simon Glass
sjg at google.com
Sun Oct 8 01:10:00 CEST 2023
Hi Yurii,
On Fri, 6 Oct 2023 at 15:32, Yurii Monakov <monakov.y at gmail.com> wrote:
>
> This commit fixes some issues with extra 'Esc' keys entered by user:
>
> 1. Sequence <Esc><Esc><Enter> right after autoboot stop gives:
> =>
> nknown command 'ry 'help'
> =>
> 2. Sequence <Esc><p><r><i><Enter> gives:
> => ri
> Unknown command 'ri' - try 'help'
> =>
> 3. Extra 'Esc' key presses break backspace functionality.
>
> Signed-off-by: Yurii Monakov <monakov.y at gmail.com>
> ---
> common/cli_getch.c | 2 ++
> 1 file changed, 2 insertions(+)
>
> diff --git a/common/cli_getch.c b/common/cli_getch.c
> index 61d4cb261b..0ee7908777 100644
> --- a/common/cli_getch.c
> +++ b/common/cli_getch.c
> @@ -46,6 +46,8 @@ static int cli_ch_esc(struct cli_ch_state *cch, int ichar,
> case 1:
> if (ichar == '[' || ichar == 'O')
> act = ESC_SAVE;
> + else
> + act = ESC_CONVERTED;
> break;
> case 2:
> switch (ichar) {
> --
> 2.34.1
>
This is a bit unfortunate. Basically the problem (as I understand it)
is that characters are built up for processing so the expected ichar
== 0 is never passed in.
I think the fix is reasonable. Does it work as well if use:
else if (ichar == '\e')
act = ESC_CONVERTED;
?
Also please can you add a test case o test/common/cread.c
https://u-boot.readthedocs.io/en/latest/develop/tests_sandbox.html
Regards,
Simon
More information about the U-Boot
mailing list