diff options
Diffstat (limited to 'tools/mkimage.c')
-rw-r--r-- | tools/mkimage.c | 26 |
1 files changed, 14 insertions, 12 deletions
diff --git a/tools/mkimage.c b/tools/mkimage.c index 7fd9fd1aeb8..dc2d4c5386f 100644 --- a/tools/mkimage.c +++ b/tools/mkimage.c @@ -27,7 +27,7 @@ extern unsigned long crc32 (unsigned long crc, const char *buf, unsigned int len); static void copy_file (int, const char *, int); static void usage (void); -static void image_verify_header (char *, int); +static int image_verify_header (char *, int); static void fit_handle_file (void); char *datafile; @@ -59,6 +59,7 @@ main (int argc, char **argv) struct stat sbuf; unsigned char *ptr; char *name = ""; + int retval; cmdname = *argv; @@ -218,24 +219,24 @@ NXTARG: ; exit (EXIT_FAILURE); } - if (fdt_check_header (ptr)) { - /* old-style image */ - image_verify_header ((char *)ptr, sbuf.st_size); - image_print_contents ((image_header_t *)ptr); - } else { + if (!(retval = fdt_check_header (ptr))) { /* FIT image */ fit_print_contents (ptr); + } else if (!(retval = image_verify_header ((char *)ptr, + sbuf.st_size))) { + /* old-style image */ + image_print_contents ((image_header_t *)ptr); } (void) munmap((void *)ptr, sbuf.st_size); (void) close (ifd); - exit (EXIT_SUCCESS); + exit (retval); } else if (fflag) { /* Flattened Image Tree (FIT) format handling */ debug ("FIT format handling\n"); fit_handle_file (); - exit (EXIT_SUCCESS); + exit (retval); } /* @@ -479,7 +480,7 @@ usage () exit (EXIT_FAILURE); } -static void +static int image_verify_header (char *ptr, int image_size) { int len; @@ -499,7 +500,7 @@ image_verify_header (char *ptr, int image_size) fprintf (stderr, "%s: Bad Magic Number: \"%s\" is no valid image\n", cmdname, imagefile); - exit (EXIT_FAILURE); + return -FDT_ERR_BADMAGIC; } data = (char *)hdr; @@ -512,7 +513,7 @@ image_verify_header (char *ptr, int image_size) fprintf (stderr, "%s: ERROR: \"%s\" has bad header checksum!\n", cmdname, imagefile); - exit (EXIT_FAILURE); + return -FDT_ERR_BADSTATE; } data = ptr + sizeof(image_header_t); @@ -522,8 +523,9 @@ image_verify_header (char *ptr, int image_size) fprintf (stderr, "%s: ERROR: \"%s\" has corrupted data!\n", cmdname, imagefile); - exit (EXIT_FAILURE); + return -FDT_ERR_BADSTRUCTURE; } + return 0; } /** |