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 7fd9fd1ae..dc2d4c538 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;  }  /** |