[PATCH] tpmevlogdump: fix leak of fd on error return paths, voidify close returns

Colin King colin.king at canonical.com
Mon Jul 6 18:14:20 UTC 2020


From: Colin Ian King <colin.king at canonical.com>

Ensure that fd is not leaked on error returns paths, close these before
returning.  Make minor closedir re-ordering change at end of function
to save one closedir call. Explicitly void-ify the error returns from
close and closedir calls.

Signed-off-by: Colin Ian King <colin.king at canonical.com>
---
 src/tpm/tpmevlogdump/tpmevlogdump.c | 13 +++++++------
 1 file changed, 7 insertions(+), 6 deletions(-)

diff --git a/src/tpm/tpmevlogdump/tpmevlogdump.c b/src/tpm/tpmevlogdump/tpmevlogdump.c
index 4a6276b3..998b48eb 100644
--- a/src/tpm/tpmevlogdump/tpmevlogdump.c
+++ b/src/tpm/tpmevlogdump/tpmevlogdump.c
@@ -431,7 +431,8 @@ static int tpmevlogdump_test1(fwts_framework *fw)
 				tpm_logfile_found = true;
 				if (data == NULL) {
 					fwts_log_info(fw, "Cannot load the tpm event logs. Aborted.");
-					closedir(dir);
+					(void)closedir(dir);
+					(void)close(fd);
 					return FWTS_ABORTED;
 				} else {
 					/* check if the TPM2 eventlog */
@@ -440,23 +441,23 @@ static int tpmevlogdump_test1(fwts_framework *fw)
 					else {
 						fwts_log_info(fw, "Cannot find the tpm2 event log. Aborted.");
 						free(data);
-						closedir(dir);
+						(void)closedir(dir);
+						(void)close(fd);
 						return FWTS_ABORTED;
 					}
 					free(data);
 				}
-				close(fd);
+				(void)close(fd);
 			}
 		}
 	} while (tpmdir);
 
+	(void)closedir(dir);
+
 	if (!tpm_logfile_found) {
 		fwts_log_info(fw, "Cannot find the tpm event log. Aborted.");
-		closedir(dir);
 		return FWTS_ABORTED;
 	}
-
-	closedir(dir);
 	return FWTS_OK;
 }
 
-- 
2.27.0




More information about the fwts-devel mailing list