From 30705cd89271ea05ff6c65552af3dc4f0680a03c Mon Sep 17 00:00:00 2001 From: Nicolas Heemeryck Date: Wed, 20 Apr 2022 23:58:39 +0200 Subject: 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 --- tools/imagetool.c | 40 +++++++++++++++++++++++----------------- 1 file changed, 23 insertions(+), 17 deletions(-) (limited to 'tools') 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; -- cgit v1.3.1 From 616571804a01f032bc43fa4fdeb42f00cb90513c Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Tue, 26 Apr 2022 19:24:38 +0200 Subject: tools: mkimage: Avoid ENODATA in host tools ENODATA isn't part of POSIX. Use EINVAL instead. Signed-off-by: Mark Kettenis Reviewed-by: Tom Rini --- tools/image-host.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools') diff --git a/tools/image-host.c b/tools/image-host.c index ab6f756cf1b..698adfb3e1d 100644 --- a/tools/image-host.c +++ b/tools/image-host.c @@ -1205,7 +1205,7 @@ int fit_pre_load_data(const char *keydir, void *keydest, void *fit) if (!key_name) printf("The property key-name is missing in the node %s\n", IMAGE_PRE_LOAD_PATH); - ret = -ENODATA; + ret = -EINVAL; goto out; } -- cgit v1.3.1