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>
This commit is contained in:
Michal Simek 2017-12-05 15:42:25 +01:00
parent 3a55cb38c5
commit 6d0cbbd596

View File

@ -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;
}