From d9a405aaf62cc8204f7300eb94713b39df793f04 Mon Sep 17 00:00:00 2001 From: wdenk Date: Tue, 7 Oct 2003 20:01:55 +0000 Subject: [PATCH] Use IH_TYPE_FILESYSTEM for TRAB "disk" images. --- CHANGELOG | 2 ++ board/trab/auto_update.c | 18 +++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index f3481222ce..c1492ccd43 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -2,6 +2,8 @@ Changes for U-Boot 1.0.0: ====================================================================== +* Use IH_TYPE_FILESYSTEM for TRAB "disk" images. + * Fix build problems under FreeBSD * Add generic filesystem image type diff --git a/board/trab/auto_update.c b/board/trab/auto_update.c index 3113cf89ad..f44b9bf594 100644 --- a/board/trab/auto_update.c +++ b/board/trab/auto_update.c @@ -254,9 +254,11 @@ au_check_valid(int idx, long nbytes) printf ("Image %s wrong type\n", aufile[idx]); return -1; } - if ((idx == IDX_DISK || idx == IDX_APP) - && (hdr->ih_type != IH_TYPE_RAMDISK)) - { + if ((idx == IDX_DISK) && (hdr->ih_type != IH_TYPE_FILESYSTEM)) { + printf ("Image %s wrong type\n", aufile[idx]); + return -1; + } + if ((idx == IDX_APP) && (hdr->ih_type != IH_TYPE_RAMDISK)) { printf ("Image %s wrong type\n", aufile[idx]); return -1; } @@ -269,8 +271,14 @@ au_check_valid(int idx, long nbytes) /* special case for prepare.img */ if (idx == IDX_PREPARE) return 0; - /* check the size does not exceed space in flash */ - if ((ausize[idx] != 0) && (ausize[idx] < ntohl(hdr->ih_size))) { + /* recycle checksum */ + checksum = ntohl(hdr->ih_size); + /* for kernel and app the image header must also fit into flash */ + if (idx != IDX_DISK) + checksum += sizeof(*hdr); + /* check the size does not exceed space in flash. HUSH scripts */ + /* all have ausize[] set to 0 */ + if ((ausize[idx] != 0) && (ausize[idx] < checksum)) { printf ("Image %s is bigger than FLASH\n", aufile[idx]); return -1; } -- 2.30.2