tools/fit_image.c: Update some return code paths
authorTom Rini <trini@konsulko.com>
Wed, 27 Sep 2017 02:14:44 +0000 (22:14 -0400)
committerTom Rini <trini@konsulko.com>
Fri, 6 Oct 2017 15:28:22 +0000 (11:28 -0400)
Coverity has found some problems with the return paths in parts of this
code.  We have a case where we were going to the wrong part of the
unwind (open() failed so we cannot close the fd), a case where we were
only free()ing our buf on the error path and finally a case where we did
not munmap in the failure path.

Reported-by: Coverity (CID: 138492, 138495, 143064)
Signed-off-by: Tom Rini <trini@konsulko.com>
tools/fit_image.c

index 4dc8bd8862454598d1bf5383b259707a06cfccba..c6026567f3a6d3f836a2ffeba4055be53201dba5 100644 (file)
@@ -372,7 +372,7 @@ static int fit_build(struct image_tool_params *params, const char *fname)
        if (fd < 0) {
                fprintf(stderr, "%s: Can't open %s: %s\n",
                        params->cmdname, fname, strerror(errno));
-               goto err;
+               goto err_buf;
        }
        ret = write(fd, buf, size);
        if (ret != size) {
@@ -501,6 +501,7 @@ static int fit_extract_data(struct image_tool_params *params, const char *fname)
                ret = -EIO;
                goto err;
        }
+       free(buf);
        close(fd);
        return 0;
 
@@ -601,6 +602,7 @@ static int fit_import_data(struct image_tool_params *params, const char *fname)
        ret = 0;
 
 err:
+       munmap(old_fdt, sbuf.st_size);
        free(fdt);
        close(fd);
        return ret;