]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
tools/mxsimage: Remove fclose on empty FILE pointer
authorMattias Hansson <hansson.mattias@gmail.com>
Wed, 24 Nov 2021 12:10:49 +0000 (13:10 +0100)
committerStefano Babic <sbabic@denx.de>
Sat, 5 Feb 2022 12:38:39 +0000 (13:38 +0100)
If `sb_load_cmdfile()` fails to open the configuration file it will jump
to error handling where the code will try to `fclose()` the FILE pointer
which is NULL causing `mkimage` to segfault.

This patch removes the label for error handling and instead returns
immediately which skips the `fclose()` and prevents the segfault. The
errno is also described in the error message to guide users.

Signed-off-by: Mattias Hansson <hansson.mattias@gmail.com>
Reviewed-by: Wolfgang Denk <wd@denx.de>
tools/mxsimage.c

index 002f4b525aac0fe4e871a2a76d1d5a7e0f96b6a7..fee022aab46b5bda9f0d001a7f2e29e5f21a8a02 100644 (file)
@@ -1595,8 +1595,11 @@ static int sb_load_cmdfile(struct sb_image_ctx *ictx)
        size_t len;
 
        fp = fopen(ictx->cfg_filename, "r");
-       if (!fp)
-               goto err_file;
+       if (!fp) {
+               fprintf(stderr, "ERR: Failed to load file \"%s\": \"%s\"\n",
+                       ictx->cfg_filename, strerror(errno));
+               return -EINVAL;
+       }
 
        while ((rlen = getline(&line, &len, fp)) > 0) {
                memset(&cmd, 0, sizeof(cmd));
@@ -1616,12 +1619,6 @@ static int sb_load_cmdfile(struct sb_image_ctx *ictx)
        fclose(fp);
 
        return 0;
-
-err_file:
-       fclose(fp);
-       fprintf(stderr, "ERR: Failed to load file \"%s\"\n",
-               ictx->cfg_filename);
-       return -EINVAL;
 }
 
 static int sb_build_tree_from_cfg(struct sb_image_ctx *ictx)