tools: zynqmpimage: Check return values from file functions

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@xilinx.com>
diff --git a/tools/zynqmpimage.c b/tools/zynqmpimage.c
index 9667b11..f48ac6d 100644
--- a/tools/zynqmpimage.c
+++ b/tools/zynqmpimage.c
@@ -245,16 +245,38 @@
 	return EXIT_FAILURE;
 }
 
-static int fsize(FILE *fp)
+static uint32_t fsize(FILE *fp)
 {
-	int size;
-	int origin = ftell(fp);
+	int size, ret, origin;
 
-	fseek(fp, 0L, SEEK_END);
+	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);
+	}
+
 	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;
 }