[PATCH] android: boot: fix wrong end of header in v3/v4 parsing
Guillaume Ranquet
ranquet.guillaume at gmail.com
Thu Sep 11 15:50:26 CEST 2025
The android boot header is page aligned but the current code made the
assumption that the header was always smaller than the current header
format.
When the page_size is defined as 2048, as this is the case with the
cuttlefish target, the current code sets the end of the header in the
middle of it as the v3 and v4 headers are respectively 2112 and 2128
bytes long.
Fix that by aligning to page_size
Fixes: 1115027d2f75 ("android: boot: update android_image_get_data to support v3, v4")
Signed-off-by: Guillaume Ranquet <ranquet.guillaume at gmail.com>
---
boot/image-android.c | 7 ++++++-
include/android_image.h | 2 ++
2 files changed, 8 insertions(+), 1 deletion(-)
diff --git a/boot/image-android.c b/boot/image-android.c
index 1cd2060bb3fdc85ff5f1dd81111ddc7663bf3b57..e46dee0d9b36a9a81dc2dc2999bf20be6a36846d 100644
--- a/boot/image-android.c
+++ b/boot/image-android.c
@@ -107,7 +107,12 @@ static void android_vendor_boot_image_v3_v4_parse_hdr(const struct andr_vnd_boot
data->dtb_load_addr = hdr->dtb_addr;
data->bootconfig_size = hdr->bootconfig_size;
end = (ulong)hdr;
- end += hdr->page_size;
+
+ if (hdr->header_version > 3)
+ end += ALIGN(ANDR_VENDOR_BOOT_V4_SIZE, hdr->page_size);
+ else
+ end += ALIGN(ANDR_VENDOR_BOOT_V3_SIZE, hdr->page_size);
+
if (hdr->vendor_ramdisk_size) {
data->vendor_ramdisk_ptr = end;
data->vendor_ramdisk_size = hdr->vendor_ramdisk_size;
diff --git a/include/android_image.h b/include/android_image.h
index 96820709b42830c7ce4cb753687da373936253a7..a2d80499ba313589484dea17185703ac3866aa4d 100644
--- a/include/android_image.h
+++ b/include/android_image.h
@@ -21,6 +21,8 @@
#define ANDR_BOOT_ARGS_SIZE 512
#define ANDR_BOOT_EXTRA_ARGS_SIZE 1024
#define VENDOR_BOOT_MAGIC "VNDRBOOT"
+#define ANDR_VENDOR_BOOT_V3_SIZE 2112 /* sz(andr_vnd_boot_img_hdr) - sz(vendor_ramdisk_table*) */
+#define ANDR_VENDOR_BOOT_V4_SIZE 2128 /* sz(andr_vnd_boot_img_hdr) */
#define ANDR_VENDOR_BOOT_MAGIC_SIZE 8
#define ANDR_VENDOR_BOOT_ARGS_SIZE 2048
#define ANDR_VENDOR_BOOT_NAME_SIZE 16
---
base-commit: c85b8071e7d3fd333f8a2fdd28083cb5ec3a0645
change-id: 20250911-android_header_fix-89b083cb30e6
Best regards,
--
Guillaume Ranquet <ranquet.guillaume at gmail.com>
More information about the U-Boot
mailing list