From dc9b62ba74b276c05e4e6aede8cb63ea4ff53e4d Mon Sep 17 00:00:00 2001 From: Greg Kaiser Date: Thu, 11 Aug 2016 11:34:16 -0700 Subject: [PATCH] fastboot: Don't leak file in error case This is probably not very significant in this standalone tool, but makes it easier for us to find leaks in our other system code via static analysis. (cherry-pick of 407a2195391685627e6be947491041ae3c8cbe61.) Change-Id: I4e14cadc1e53bac0848e0e0c7f531f920e43cb0a --- fastboot/fastboot.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp index dde21d559..c097d045e 100644 --- a/fastboot/fastboot.cpp +++ b/fastboot/fastboot.cpp @@ -519,6 +519,7 @@ static int unzip_to_file(ZipArchiveHandle zip, char* entry_name) { ZipEntry zip_entry; if (FindEntry(zip, zip_entry_name, &zip_entry) != 0) { fprintf(stderr, "archive does not contain '%s'\n", entry_name); + fclose(fp); return -1; } @@ -526,10 +527,12 @@ static int unzip_to_file(ZipArchiveHandle zip, char* entry_name) { int error = ExtractEntryToFile(zip, &zip_entry, fd); if (error != 0) { fprintf(stderr, "failed to extract '%s': %s\n", entry_name, ErrorCodeString(error)); + fclose(fp); return -1; } lseek(fd, 0, SEEK_SET); + // TODO: We're leaking 'fp' here. return fd; }