tools: kwbimage: Fix unchecked return value and fd leak
authorMario Six <mario.six@gdsys.cc>
Mon, 13 Feb 2017 09:11:55 +0000 (10:11 +0100)
committerStefan Roese <sr@denx.de>
Fri, 17 Feb 2017 09:15:21 +0000 (10:15 +0100)
The return value of fstat was not checked in kwbimage, and in the case
of an error, the already open file was not closed. Fix both errors.

Reported-by: Coverity (CID: 155971)
Reported-by: Coverity (CID: 155969)
Signed-off-by: Mario Six <mario.six@gdsys.cc>
Signed-off-by: Stefan Roese <sr@denx.de>
tools/kwbimage.c

index 93797c9..2c637c7 100644 (file)
@@ -992,7 +992,11 @@ int add_binary_header_v1(uint8_t *cur)
                return -1;
        }
 
-       fstat(fileno(bin), &s);
+       if (fstat(fileno(bin), &s)) {
+               fprintf(stderr, "Cannot stat binary file %s\n",
+                       binarye->binary.file);
+               goto err_close;
+       }
 
        binhdrsz = sizeof(struct opt_hdr_v1) +
                (binarye->binary.nargs + 2) * sizeof(uint32_t) +
@@ -1022,7 +1026,7 @@ int add_binary_header_v1(uint8_t *cur)
                fprintf(stderr,
                        "Could not read binary image %s\n",
                        binarye->binary.file);
-               return -1;
+               goto err_close;
        }
 
        fclose(bin);
@@ -1040,6 +1044,11 @@ int add_binary_header_v1(uint8_t *cur)
        cur += sizeof(uint32_t);
 
        return 0;
+
+err_close:
+       fclose(bin);
+
+       return -1;
 }
 
 #if defined(CONFIG_KWB_SECURE)