summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--tools/fit_common.c5
-rw-r--r--tools/fit_common.h8
-rw-r--r--tools/imagetool.c34
-rw-r--r--tools/imagetool.h19
-rw-r--r--tools/mkimage.c2
5 files changed, 65 insertions, 3 deletions
diff --git a/tools/fit_common.c b/tools/fit_common.c
index d96085eaad..9506390214 100644
--- a/tools/fit_common.c
+++ b/tools/fit_common.c
@@ -26,7 +26,10 @@
int fit_verify_header(unsigned char *ptr, int image_size,
struct image_tool_params *params)
{
- return fdt_check_header(ptr);
+ if (fdt_check_header(ptr) != EXIT_SUCCESS || !fit_check_format(ptr))
+ return EXIT_FAILURE;
+
+ return EXIT_SUCCESS;
}
int fit_check_image_types(uint8_t type)
diff --git a/tools/fit_common.h b/tools/fit_common.h
index 71e792e3c4..9e09624f64 100644
--- a/tools/fit_common.h
+++ b/tools/fit_common.h
@@ -10,6 +10,14 @@
#include "mkimage.h"
#include <image.h>
+/**
+ * Verify the format of FIT header pointed to by ptr
+ *
+ * @ptr: image header to be verified
+ * @image_size: size of while image
+ * @params: mkimage parameters
+ * @return 0 if OK, -1 on error
+ */
int fit_verify_header(unsigned char *ptr, int image_size,
struct image_tool_params *params);
diff --git a/tools/imagetool.c b/tools/imagetool.c
index b3e628f612..ba1f64aa37 100644
--- a/tools/imagetool.c
+++ b/tools/imagetool.c
@@ -46,7 +46,7 @@ int imagetool_verify_print_header(
if (retval == 0) {
/*
- * Print the image information if verify is
+ * Print the image information if verify is
* successful
*/
if ((*curr)->print_header) {
@@ -65,6 +65,38 @@ int imagetool_verify_print_header(
return retval;
}
+int imagetool_verify_print_header_by_type(
+ void *ptr,
+ struct stat *sbuf,
+ struct image_type_params *tparams,
+ struct image_tool_params *params)
+{
+ int retval;
+
+ retval = tparams->verify_header((unsigned char *)ptr, sbuf->st_size,
+ params);
+
+ if (retval == 0) {
+ /*
+ * Print the image information if verify is successful
+ */
+ if (tparams->print_header) {
+ if (!params->quiet)
+ tparams->print_header(ptr);
+ } else {
+ fprintf(stderr,
+ "%s: print_header undefined for %s\n",
+ params->cmdname, tparams->name);
+ }
+ } else {
+ fprintf(stderr,
+ "%s: verify_header failed for %s with exit code %d\n",
+ params->cmdname, tparams->name, retval);
+ }
+
+ return retval;
+}
+
int imagetool_save_subimage(
const char *file_name,
ulong file_data,
diff --git a/tools/imagetool.h b/tools/imagetool.h
index 71471420f9..2689a4004a 100644
--- a/tools/imagetool.h
+++ b/tools/imagetool.h
@@ -179,6 +179,25 @@ int imagetool_verify_print_header(
struct image_type_params *tparams,
struct image_tool_params *params);
+/*
+ * imagetool_verify_print_header_by_type() - verifies the image header
+ *
+ * Verify the image_header for the image type given by tparams.
+ * If verification is successful, this prints the respective header.
+ * @ptr: pointer the the image header
+ * @sbuf: stat information about the file pointed to by ptr
+ * @tparams: image type parameters
+ * @params: mkimage parameters
+ *
+ * @return 0 on success, negative if input image format does not match with
+ * the given image type
+ */
+int imagetool_verify_print_header_by_type(
+ void *ptr,
+ struct stat *sbuf,
+ struct image_type_params *tparams,
+ struct image_tool_params *params);
+
/**
* imagetool_save_subimage - store data into a file
* @file_name: name of the destination file
diff --git a/tools/mkimage.c b/tools/mkimage.c
index ea5ed542ab..2899adff81 100644
--- a/tools/mkimage.c
+++ b/tools/mkimage.c
@@ -409,7 +409,7 @@ int main(int argc, char **argv)
* Print the image information for matched image type
* Returns the error code if not matched
*/
- retval = imagetool_verify_print_header(ptr, &sbuf,
+ retval = imagetool_verify_print_header_by_type(ptr, &sbuf,
tparams, &params);
(void) munmap((void *)ptr, sbuf.st_size);