diff options
author | wdenk <wdenk> | 2003-10-07 20:01:55 +0000 |
---|---|---|
committer | wdenk <wdenk> | 2003-10-07 20:01:55 +0000 |
commit | d9a405aaf62cc8204f7300eb94713b39df793f04 (patch) | |
tree | 12db16a6247a291d3bcd2c8388a47b1365b5e95d /board | |
parent | 147031aef15cedbcb6dea3679094baba34002f66 (diff) |
Use IH_TYPE_FILESYSTEM for TRAB "disk" images.
Diffstat (limited to 'board')
-rw-r--r-- | board/trab/auto_update.c | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/board/trab/auto_update.c b/board/trab/auto_update.c index 3113cf89ad0..f44b9bf5944 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; } |