[PATCH] input: avoid NULL dereference

Simon Glass sjg at google.com
Mon Oct 2 20:56:39 CEST 2023


On Mon, 2 Oct 2023 at 11:26, Heinrich Schuchardt
<heinrich.schuchardt at canonical.com> wrote:
>
> Before using the result of env_get("stdin") we must check if it is NULL.
>
> Use attribute __maybe unused instead of dummy assignment.
>
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
>  drivers/input/input.c | 21 ++++++++++++---------
>  1 file changed, 12 insertions(+), 9 deletions(-)
>

Reviewed-by: Simon Glass <sjg at chromium.org>

But is it not possible to use if() instead of #if ?

> diff --git a/drivers/input/input.c b/drivers/input/input.c
> index a4341e8c7c..2330b21f71 100644
> --- a/drivers/input/input.c
> +++ b/drivers/input/input.c
> @@ -666,19 +666,22 @@ int input_init(struct input_config *config, int leds)
>
>  int input_stdio_register(struct stdio_dev *dev)
>  {
> -       int error;
> +       __maybe_unused int error;
>
>         error = stdio_register(dev);
>  #if !defined(CONFIG_SPL_BUILD) || CONFIG_IS_ENABLED(ENV_SUPPORT)
> -       /* check if this is the standard input device */
> -       if (!error && strcmp(env_get("stdin"), dev->name) == 0) {
> -               /* reassign the console */
> -               if (OVERWRITE_CONSOLE ||
> -                               console_assign(stdin, dev->name))
> -                       return -1;
> +       if (!error) {
> +               const char *cstdin;
> +
> +               /* check if this is the standard input device */
> +               cstdin = env_get("stdin");
> +               if (cstdin && !strcmp(cstdin, dev->name)) {
> +                       /* reassign the console */
> +                       if (OVERWRITE_CONSOLE ||
> +                           console_assign(stdin, dev->name))
> +                               return -1;
> +               }
>         }
> -#else
> -       error = error;
>  #endif
>
>         return 0;
> --
> 2.40.1
>

Regards,
Simon


More information about the U-Boot mailing list