From 1f6c8a573381ed7d4f506ab45eeb23fb2a896660 Mon Sep 17 00:00:00 2001
From: Mario Six <mario.six@gdsys.cc>
Date: Mon, 13 Feb 2017 10:11:55 +0100
Subject: [PATCH] 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 <mario.six@gdsys.cc>
Signed-off-by: Stefan Roese <sr@denx.de>
---
 tools/kwbimage.c | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/tools/kwbimage.c b/tools/kwbimage.c
index 93797c99da7..2c637c74468 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)
-- 
GitLab