[U-Boot] [PATCH] tools: zynqmpimage: Check return values from file functions
Michal Simek
michal.simek at xilinx.com
Fri Dec 8 15:22:51 UTC 2017
Check all return values from file functions.
In case of negative return exit immediately.
Also change fsize return value which can't be negative.
Reported-by: Coverity (CID: 23276, 23304, 169357)
Signed-off-by: Michal Simek <michal.simek at xilinx.com>
---
tools/zynqmpimage.c | 32 +++++++++++++++++++++++++++-----
1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/tools/zynqmpimage.c b/tools/zynqmpimage.c
index 9667b11b2f8a..f48ac6dbe505 100644
--- a/tools/zynqmpimage.c
+++ b/tools/zynqmpimage.c
@@ -245,16 +245,38 @@ static int zynqmpimage_check_image_types(uint8_t type)
return EXIT_FAILURE;
}
-static int fsize(FILE *fp)
+static uint32_t fsize(FILE *fp)
{
- int size;
- int origin = ftell(fp);
+ int size, ret, origin;
+
+ origin = ftell(fp);
+ if (origin < 0) {
+ fprintf(stderr, "Incorrect file size\n");
+ fclose(fp);
+ exit(2);
+ }
+
+ ret = fseek(fp, 0L, SEEK_END);
+ if (ret) {
+ fprintf(stderr, "Incorrect file SEEK_END\n");
+ fclose(fp);
+ exit(3);
+ }
- fseek(fp, 0L, SEEK_END);
size = ftell(fp);
+ if (size < 0) {
+ fprintf(stderr, "Incorrect file size\n");
+ fclose(fp);
+ exit(4);
+ }
/* going back */
- fseek(fp, origin, SEEK_SET);
+ ret = fseek(fp, origin, SEEK_SET);
+ if (ret) {
+ fprintf(stderr, "Incorrect file SEEK_SET to %d\n", origin);
+ fclose(fp);
+ exit(3);
+ }
return size;
}
--
1.9.1
More information about the U-Boot
mailing list