diff --git a/fastboot/fastboot.cpp b/fastboot/fastboot.cpp index f622ea7b1..d61c3e57a 100644 --- a/fastboot/fastboot.cpp +++ b/fastboot/fastboot.cpp @@ -579,6 +579,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; } @@ -586,10 +587,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; }