[PATCH] common/command.c: Avoid NULL pointer use in cmd_auto_complete
Adam Lackorzynski
adam at l4re.org
Fri May 15 22:40:37 CEST 2026
Hi Simon,
On Fri May 15, 2026 at 07:58:38 -0600, Simon Glass wrote:
> Hi Adam,
>
> On 2026-05-14T14:06:41, Adam Lackorzynski <adam at l4re.org> wrote:
> > common/command.c: Avoid NULL pointer use in cmd_auto_complete
> >
> > Avoid putting a potential NULL pointer to strcmp, which would lead to a
> > load at address 0.
> >
> > Signed-off-by: Adam Lackorzynski <adam at l4re.org>
> >
> > common/command.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
>
> > diff --git a/common/command.c b/common/command.c
> > @@ -373,7 +373,7 @@ int cmd_auto_complete(const char *const prompt, char *buf, int *np, int *colp)
> > const char *ps_prompt = CONFIG_SYS_PROMPT;
> > #endif
> >
> > - if (strcmp(prompt, ps_prompt) != 0)
> > + if (ps_prompt && strcmp(prompt, ps_prompt) != 0)
> > return 0; /* not in normal console */
>
> This avoids the deref but isn't quite right. uboot_cli_readline() in
> common/cli_hush.c falls back to CONFIG_SYS_PROMPT (or
> CONFIG_SYS_PROMPT_HUSH_PS2 for promptmode 2) when PS1 is unset, so
> prompt here is never NULL. With your change, a NULL PS1 makes the
> comparison succeed unconditionally and promptmode 2 gets treated as
> the normal console.
>
> Please can you fall back to the default when env_get() returns NULL,
> mirroring the readline path:
>
> const char *ps_prompt;
>
> if (IS_ENABLED(CONFIG_CMDLINE_PS_SUPPORT)) {
> ps_prompt = env_get('PS1');
>
> if (!ps_prompt)
> ps_prompt = CONFIG_SYS_PROMPT;
> } else {
> ps_prompt = CONFIG_SYS_PROMPT;
> }
>
> What do you think?
Thanks, looks good to me, will send a v2.
BR, Adam
More information about the U-Boot
mailing list