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 002f4b5..fee022a 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)