[PATCH u-boot 2/2] tools: default_image: Accept images with padding

Pali Rohár pali at kernel.org
Sun Jan 29 17:44:11 CET 2023


If image file is stored on flash partition then it contains padding, which
is not part of the image itself. Image data size is stored in the image
header. So use image size from the header instead of expecting that total
image file size is size of the header plus size of the image data. This
allows dumpimage to parse image files with padding (e.g. dumped from flash
partition).

Signed-off-by: Pali Rohár <pali at kernel.org>
---
 tools/default_image.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/tools/default_image.c b/tools/default_image.c
index 4aa9a33241cb..0996e1dfe9c8 100644
--- a/tools/default_image.c
+++ b/tools/default_image.c
@@ -81,7 +81,13 @@ static int image_verify_header(unsigned char *ptr, int image_size,
 	}
 
 	data = (const unsigned char *)ptr + sizeof(struct legacy_img_hdr);
-	len  = image_size - sizeof(struct legacy_img_hdr);
+	len = image_get_data_size(hdr);
+
+	if (image_size - sizeof(struct legacy_img_hdr) < len) {
+		debug("%s: Bad image size: \"%s\" is no valid image\n",
+		      params->cmdname, params->imagefile);
+		return -FDT_ERR_BADSTRUCTURE;
+	}
 
 	checksum = be32_to_cpu(hdr->ih_dcrc);
 	if (crc32(0, data, len) != checksum) {
-- 
2.20.1



More information about the U-Boot mailing list