From: Mario Six Date: Mon, 13 Feb 2017 09:11:55 +0000 (+0100) Subject: tools: kwbimage: Fix unchecked return value and fd leak X-Git-Tag: v2017.03-rc3~20 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=1f6c8a573381ed7d4f506ab45eeb23fb2a896660;p=oweals%2Fu-boot.git tools: kwbimage: Fix unchecked return value and fd leak 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 Signed-off-by: Stefan Roese --- diff --git a/tools/kwbimage.c b/tools/kwbimage.c index 93797c99da..2c637c7446 100644 --- a/tools/kwbimage.c +++ b/tools/kwbimage.c @@ -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)