zboot: [PATCH] boot/pxe-utils: populate initrd_filesize for extlinux boot

Simon Glass sjg at google.com
Tue Sep 19 03:04:52 CEST 2023


+Bin Meng since I think there is a similar patch applied to x86 already?


On Sat, 16 Sept 2023 at 07:31, Ryan Lahfa <ryan-uboot at lahfa.xyz> wrote:
>
> The reason for this is that initrd_filesize is constantly equal to zero
> or more specifically, potentially uninitialized memory.
>
> I believe this was introduced in
> 085cbdafca9c3d7bc2f27523a343f61db82f2ccb ("pxe: simplify label_boot()"),
> diff here:
>
> diff --git a/boot/pxe_utils.c b/boot/pxe_utils.c
> index b08aee9896..defbe465e4 100644
> --- a/boot/pxe_utils.c
> +++ b/boot/pxe_utils.c
> @@ -532,11 +532,10 @@ static int label_boot(struct pxe_context *ctx, struct pxe_label *label)
>                 }
>
>                 initrd_addr_str = env_get("ramdisk_addr_r");
> -               strcpy(initrd_filesize, simple_xtoa(size));
> -
> -               strncpy(initrd_str, initrd_addr_str, 18);
> -               strcat(initrd_str, ":");
> -               strncat(initrd_str, initrd_filesize, 9);
> +               size = snprintf(initrd_str, sizeof(initrd_str), "%s:%lx",
> +                               initrd_addr_str, size);
> +               if (size >= sizeof(initrd_str))
> +                       return 1;
>         }
>
>         if (get_relfile_envaddr(ctx, label->kernel, "kernel_addr_r",
>
> The initrd_filesize completely disappears.
>
> We re-copy the size information inside initrd_filesize, maybe, too
> naively, something may have to be done to reduce the overflow potential
> if it exist at all.
>
> pxe_utils.c |    2 ++
>  1 file changed, 2 insertions(+)
>


More information about the U-Boot mailing list