All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2] mkeficapsule: Miscellaneous fixes in the utility
@ 2021-01-22 15:04 Sughosh Ganu
  0 siblings, 0 replies; only message in thread
From: Sughosh Ganu @ 2021-01-22 15:04 UTC (permalink / raw)
  To: u-boot

Miscellaneous fixes in the mkeficapsule utility -- these include a few
resource leak issues flagged by Coverity along with some additional
code improvements suggested by Heinrich during code review.

Signed-off-by: Sughosh Ganu <sughosh.ganu@linaro.org>
---

Changes since V1:
* Use a comparison with -1 for file descriptors before closing the
  fd's.
* Remove the superfluous error != 0 check after a call to mmap.
* Remove a printf that was used during debugging.
* Return EXIT_SUCCESS and EXIT_FAILURE as return values through the
  exit libc call.

 tools/mkeficapsule.c | 38 +++++++++++++++++++++++---------------
 1 file changed, 23 insertions(+), 15 deletions(-)

diff --git a/tools/mkeficapsule.c b/tools/mkeficapsule.c
index 270943fc90..c797d240d8 100644
--- a/tools/mkeficapsule.c
+++ b/tools/mkeficapsule.c
@@ -137,8 +137,8 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 			  bool overlay)
 {
 	int ret;
-	int srcfd = 0;
-	int destfd = 0;
+	int srcfd = -1;
+	int destfd = -1;
 	void *sptr = NULL;
 	void *dptr = NULL;
 	off_t src_size;
@@ -150,6 +150,7 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 	if (srcfd == -1) {
 		fprintf(stderr, "%s: Can't open %s: %s\n",
 			__func__, pkey_file, strerror(errno));
+		ret = -1;
 		goto err;
 	}
 
@@ -157,6 +158,7 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 	if (ret == -1) {
 		fprintf(stderr, "%s: Can't stat %s: %s\n",
 			__func__, pkey_file, strerror(errno));
+		ret = -1;
 		goto err;
 	}
 
@@ -164,9 +166,10 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 
 	/* mmap the public key esl file */
 	sptr = mmap(0, src_size, PROT_READ, MAP_SHARED, srcfd, 0);
-	if ((sptr == MAP_FAILED) || (errno != 0)) {
+	if (sptr == MAP_FAILED) {
 		fprintf(stderr, "%s: Failed to mmap %s:%s\n",
 			__func__, pkey_file, strerror(errno));
+		ret = -1;
 		goto err;
 	}
 
@@ -175,6 +178,7 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 	if (destfd == -1) {
 		fprintf(stderr, "%s: Can't open %s: %s\n",
 			__func__, dtb_file, strerror(errno));
+		ret = -1;
 		goto err;
 	}
 
@@ -189,21 +193,24 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 	if (ftruncate(destfd, dtb.st_size)) {
 		fprintf(stderr, "%s: Can't expand %s: %s\n",
 			__func__, dtb_file, strerror(errno));
-		goto err;;
+		ret = -1;
+		goto err;
 	}
 
 	errno = 0;
 	/* mmap the dtb file */
 	dptr = mmap(0, dtb.st_size, PROT_READ | PROT_WRITE, MAP_SHARED,
 		    destfd, 0);
-	if ((dptr == MAP_FAILED) || (errno != 0)) {
+	if (dptr == MAP_FAILED) {
 		fprintf(stderr, "%s: Failed to mmap %s:%s\n",
 			__func__, dtb_file, strerror(errno));
+		ret = -1;
 		goto err;
 	}
 
 	if (fdt_check_header(dptr)) {
 		fprintf(stderr, "%s: Invalid FDT header\n", __func__);
+		ret = -1;
 		goto err;
 	}
 
@@ -211,6 +218,7 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 	if (ret) {
 		fprintf(stderr, "%s: Cannot expand FDT: %s\n",
 			__func__, fdt_strerror(ret));
+		ret = -1;
 		goto err;
 	}
 
@@ -219,10 +227,11 @@ static int add_public_key(const char *pkey_file, const char *dtb_file,
 	if (ret < 0) {
 		fprintf(stderr, "%s: Unable to add public key to the FDT\n",
 			__func__);
+		ret = -1;
 		goto err;
 	}
 
-	return 0;
+	ret = 0;
 
 err:
 	if (sptr)
@@ -231,13 +240,13 @@ err:
 	if (dptr)
 		munmap(dptr, dtb.st_size);
 
-	if (srcfd >= 0)
+	if (srcfd != -1)
 		close(srcfd);
 
-	if (destfd >= 0)
+	if (destfd != -1)
 		close(destfd);
 
-	return -1;
+	return ret;
 }
 
 static int create_fwbin(char *path, char *bin, efi_guid_t *guid,
@@ -421,26 +430,25 @@ int main(int argc, char **argv)
 
 	/* need a fit image file or raw image file */
 	if (!file && !pkey_file && !dtb_file) {
-		printf("%s: %d\n", __func__, __LINE__);
 		print_usage();
-		return -1;
+		exit(EXIT_FAILURE);
 	}
 
 	if (pkey_file && dtb_file) {
 		ret = add_public_key(pkey_file, dtb_file, overlay);
 		if (ret == -1) {
 			printf("Adding public key to the dtb failed\n");
-			return -1;
+			exit(EXIT_FAILURE);
 		} else {
-			return 0;
+			exit(EXIT_SUCCESS);
 		}
 	}
 
 	if (create_fwbin(argv[optind], file, guid, index, instance)
 			< 0) {
 		printf("Creating firmware capsule failed\n");
-		return -1;
+		exit(EXIT_FAILURE);
 	}
 
-	return 0;
+	exit(EXIT_SUCCESS);
 }
-- 
2.17.1

^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-01-22 15:04 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-01-22 15:04 [PATCH v2] mkeficapsule: Miscellaneous fixes in the utility Sughosh Ganu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.