diff options
| author | 2021-03-29 17:10:28 -0700 | |
|---|---|---|
| committer | 2021-03-30 15:03:39 -0700 | |
| commit | ab40ab67cebaadba645382f7850abe338504d31f (patch) | |
| tree | bdb5ff8e20a1a9b740cacafe90ff2af7947130b8 | |
| parent | 3bf5cbb891685e0cbb2118bf179bf9c8b541be9a (diff) | |
Close the FD after opening the file
Bug: 183758470
Test: Manually took incident report and verified the file is deleted
Change-Id: I040306c2365bcf98efde94fcc15575c9131f3b0e
| -rw-r--r-- | cmds/incidentd/src/WorkDirectory.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/cmds/incidentd/src/WorkDirectory.cpp b/cmds/incidentd/src/WorkDirectory.cpp index 1944d6ecc720..23d80d7953b7 100644 --- a/cmds/incidentd/src/WorkDirectory.cpp +++ b/cmds/incidentd/src/WorkDirectory.cpp @@ -400,6 +400,7 @@ status_t ReportFile::startFilteringData(int writeFd, const IncidentReportArgs& a if (dataFd < 0) { ALOGW("Error opening incident report '%s' %s", getDataFileName().c_str(), strerror(-errno)); close(writeFd); + close(dataFd); return -errno; } @@ -409,6 +410,7 @@ status_t ReportFile::startFilteringData(int writeFd, const IncidentReportArgs& a ALOGW("Error running fstat incident report '%s' %s", getDataFileName().c_str(), strerror(-errno)); close(writeFd); + close(dataFd); return -errno; } if (st.st_size != mEnvelope.data_file_size()) { @@ -418,6 +420,7 @@ status_t ReportFile::startFilteringData(int writeFd, const IncidentReportArgs& a ALOGW("Removing incident report"); mWorkDirectory->remove(this); close(writeFd); + close(dataFd); return BAD_VALUE; } @@ -427,11 +430,13 @@ status_t ReportFile::startFilteringData(int writeFd, const IncidentReportArgs& a if (!zipPipe.init()) { ALOGE("[ReportFile] Failed to setup pipe for gzip"); close(writeFd); + close(dataFd); return -errno; } int status = 0; zipPid = fork_execute_cmd((char* const*)GZIP, zipPipe.readFd().release(), writeFd, &status); close(writeFd); + close(dataFd); if (zipPid < 0 || status != 0) { ALOGE("[ReportFile] Failed to fork and exec gzip"); return status; @@ -459,6 +464,7 @@ status_t ReportFile::startFilteringData(int writeFd, const IncidentReportArgs& a } close(writeFd); + close(dataFd); if (zipPid > 0) { status_t err = wait_child(zipPid, /* timeout_ms= */ 10 * 1000); if (err != 0) { |