diff options
author | Nicolas Heemeryck | 2022-04-20 23:58:39 +0200 |
---|---|---|
committer | Tom Rini | 2022-05-05 15:06:02 -0400 |
commit | 30705cd89271ea05ff6c65552af3dc4f0680a03c (patch) | |
tree | cc67b6846b91d3ccd707875fd0dab806a3b87631 /tools | |
parent | 5d834bfa5fa61dc9dff94a92672c0a1185cb3a83 (diff) |
tools/imagetool: Fix segfault when tparams->verify_header is NULL
On some image types like i.MX8 and i.MX8M, the verify_header function
is not implemented.
Before this commit, no check on tparams->verify_header was done causing
a segfault if NULL. Now, a proper error message is printed.
Signed-off-by: Nicolas Heemeryck <nicolas.heemeryck@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/imagetool.c | 40 |
1 files changed, 23 insertions, 17 deletions
diff --git a/tools/imagetool.c b/tools/imagetool.c index 5ad6d7413fe..f14ca2fb979 100644 --- a/tools/imagetool.c +++ b/tools/imagetool.c @@ -80,27 +80,33 @@ static int imagetool_verify_print_header_by_type( 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); + int retval = -1; + + if (tparams->verify_header) { + 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: print_header undefined for %s\n", - params->cmdname, tparams->name); + "%s: verify_header failed for %s with exit code %d\n", + params->cmdname, tparams->name, retval); } + } else { - fprintf(stderr, - "%s: verify_header failed for %s with exit code %d\n", - params->cmdname, tparams->name, retval); + fprintf(stderr, "%s: print_header undefined for %s\n", + params->cmdname, tparams->name); } return retval; |