On Mon, 27 Feb 2023 at 12:55, Marek Vasut
<[email protected]> wrote:
>
> The command assumed 32bit pointers so far, with 64bit pointer the
> command would overwrite a piece of stack. Fix it by extending the
> array size to cater for 64bit pointer, and use snprintf() to avoid
> writing past the end of the array ever again.
>
> Signed-off-by: Marek Vasut <[email protected]>
> ---
> Cc: Heinrich Schuchardt <[email protected]>
> Cc: Simon Glass <[email protected]>
> Cc: Tom Rini <[email protected]>
> ---
>  cmd/fdt.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>

Reviewed-by: Simon Glass <[email protected]>


> diff --git a/cmd/fdt.c b/cmd/fdt.c
> index 279dad9fe11..bc19303159d 100644
> --- a/cmd/fdt.c
> +++ b/cmd/fdt.c
> @@ -466,9 +466,9 @@ static int do_fdt(struct cmd_tbl *cmdtp, int flag, int 
> argc, char *const argv[])
>                                                 return ret;
>                                 } else if (subcmd[0] == 'a') {
>                                         /* Get address */
> -                                       char buf[11];
> +                                       char buf[19];
>
> -                                       sprintf(buf, "0x%p", nodep);
> +                                       snprintf(buf, sizeof(buf), "0x%p", 
> nodep);

Do we need the 0x? I believe that is always the base.

>                                         env_set(var, buf);
>                                 } else if (subcmd[0] == 's') {
>                                         /* Get size */
> --
> 2.39.2
>

Regards,
Simon

Reply via email to