From d9a405aaf62cc8204f7300eb94713b39df793f04 Mon Sep 17 00:00:00 2001 From: wdenk Date: Tue, 7 Oct 2003 20:01:55 +0000 Subject: Use IH_TYPE_FILESYSTEM for TRAB "disk" images. --- board/trab/auto_update.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'board') diff --git a/board/trab/auto_update.c b/board/trab/auto_update.c index 3113cf89a..f44b9bf59 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; } -- cgit v1.2.3