From 2984d21a28f812c9c1fd2243cc72796f69a61585 Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Wed, 26 Jul 2023 21:01:24 -0600 Subject: [PATCH] bootstd: Init the size before reading the devicetree The implementation in distro_efi_try_bootflow_files() does not pass a valid size to bootmeth_common_read_file(), so this can fail if the uninted value happens to be too small. Fix this. This was reported by someone but I cannot now find the email. Signed-off-by: Simon Glass --- boot/bootmeth_efi.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/boot/bootmeth_efi.c b/boot/bootmeth_efi.c index bceec0d12e..1c9f2b1e2f 100644 --- a/boot/bootmeth_efi.c +++ b/boot/bootmeth_efi.c @@ -21,6 +21,7 @@ #include #include #include +#include #define EFI_DIRNAME "efi/boot/" @@ -281,9 +282,12 @@ static int distro_efi_try_bootflow_files(struct udevice *dev, ret = distro_efi_get_fdt_name(fname, sizeof(fname), seq); if (ret == -EALREADY) bflow->flags = BOOTFLOWF_USE_PRIOR_FDT; - if (!ret) + if (!ret) { + /* Limit FDT files to 4MB */ + size = SZ_4M; ret = bootmeth_common_read_file(dev, bflow, fname, fdt_addr, &size); + } } if (*fname) { -- 2.39.5