Loading cmds/dumpstate/DumpstateService.cpp +3 −4 Original line number Original line Diff line number Diff line Loading @@ -148,14 +148,13 @@ binder::Status DumpstateService::startBugreport(int32_t calling_uid, } } binder::Status DumpstateService::cancelBugreport() { binder::Status DumpstateService::cancelBugreport() { // This is a no-op since the cancellation is done from java side via setting sys properties. std::lock_guard<std::mutex> lock(lock_); // See BugreportManagerServiceImpl. ds_->Cancel(); // TODO(b/111441001): maybe make native and java sides use different binder interface // to avoid these annoyances. return binder::Status::ok(); return binder::Status::ok(); } } status_t DumpstateService::dump(int fd, const Vector<String16>&) { status_t DumpstateService::dump(int fd, const Vector<String16>&) { std::lock_guard<std::mutex> lock(lock_); if (ds_ == nullptr) { if (ds_ == nullptr) { dprintf(fd, "Bugreport not in progress yet"); dprintf(fd, "Bugreport not in progress yet"); return NO_ERROR; return NO_ERROR; Loading cmds/dumpstate/dumpstate.cpp +16 −3 Original line number Original line Diff line number Diff line Loading @@ -239,6 +239,9 @@ static bool CopyFileToFd(const std::string& input_file, int out_fd) { } } static bool UnlinkAndLogOnError(const std::string& file) { static bool UnlinkAndLogOnError(const std::string& file) { if (file.empty()) { return false; } if (unlink(file.c_str())) { if (unlink(file.c_str())) { MYLOGE("Failed to unlink file (%s): %s\n", file.c_str(), strerror(errno)); MYLOGE("Failed to unlink file (%s): %s\n", file.c_str(), strerror(errno)); return false; return false; Loading @@ -246,7 +249,6 @@ static bool UnlinkAndLogOnError(const std::string& file) { return true; return true; } } int64_t GetModuleMetadataVersion() { int64_t GetModuleMetadataVersion() { auto binder = defaultServiceManager()->getService(android::String16("package_native")); auto binder = defaultServiceManager()->getService(android::String16("package_native")); if (binder == nullptr) { if (binder == nullptr) { Loading Loading @@ -2419,6 +2421,17 @@ Dumpstate::RunStatus Dumpstate::Run(int32_t calling_uid, const std::string& call return status; return status; } } void Dumpstate::Cancel() { CleanupTmpFiles(); android::os::UnlinkAndLogOnError(log_path_); for (int i = 0; i < NUM_OF_DUMPS; i++) { android::os::UnlinkAndLogOnError(ds.bugreport_internal_dir_ + "/" + kDumpstateBoardFiles[i]); } tombstone_data_.clear(); anr_data_.clear(); } /* /* * Dumps relevant information to a bugreport based on the given options. * Dumps relevant information to a bugreport based on the given options. * * Loading Loading @@ -2755,7 +2768,7 @@ bool Dumpstate::CalledByApi() const { return ds.options_->bugreport_fd.get() != -1 ? true : false; return ds.options_->bugreport_fd.get() != -1 ? true : false; } } void Dumpstate::CleanupFiles() { void Dumpstate::CleanupTmpFiles() { android::os::UnlinkAndLogOnError(tmp_path_); android::os::UnlinkAndLogOnError(tmp_path_); android::os::UnlinkAndLogOnError(screenshot_path_); android::os::UnlinkAndLogOnError(screenshot_path_); android::os::UnlinkAndLogOnError(path_); android::os::UnlinkAndLogOnError(path_); Loading @@ -2763,7 +2776,7 @@ void Dumpstate::CleanupFiles() { Dumpstate::RunStatus Dumpstate::HandleUserConsentDenied() { Dumpstate::RunStatus Dumpstate::HandleUserConsentDenied() { MYLOGD("User denied consent; deleting files and returning\n"); MYLOGD("User denied consent; deleting files and returning\n"); CleanupFiles(); CleanupTmpFiles(); return USER_CONSENT_DENIED; return USER_CONSENT_DENIED; } } Loading cmds/dumpstate/dumpstate.h +4 −1 Original line number Original line Diff line number Diff line Loading @@ -334,6 +334,9 @@ class Dumpstate { RunStatus ParseCommandlineAndRun(int argc, char* argv[]); RunStatus ParseCommandlineAndRun(int argc, char* argv[]); /* Deletes in-progress files */ void Cancel(); /* Sets runtime options. */ /* Sets runtime options. */ void SetOptions(std::unique_ptr<DumpOptions> options); void SetOptions(std::unique_ptr<DumpOptions> options); Loading Loading @@ -502,7 +505,7 @@ class Dumpstate { // Removes the in progress files output files (tmp file, zip/txt file, screenshot), // Removes the in progress files output files (tmp file, zip/txt file, screenshot), // but leaves the log file alone. // but leaves the log file alone. void CleanupFiles(); void CleanupTmpFiles(); RunStatus HandleUserConsentDenied(); RunStatus HandleUserConsentDenied(); Loading Loading
cmds/dumpstate/DumpstateService.cpp +3 −4 Original line number Original line Diff line number Diff line Loading @@ -148,14 +148,13 @@ binder::Status DumpstateService::startBugreport(int32_t calling_uid, } } binder::Status DumpstateService::cancelBugreport() { binder::Status DumpstateService::cancelBugreport() { // This is a no-op since the cancellation is done from java side via setting sys properties. std::lock_guard<std::mutex> lock(lock_); // See BugreportManagerServiceImpl. ds_->Cancel(); // TODO(b/111441001): maybe make native and java sides use different binder interface // to avoid these annoyances. return binder::Status::ok(); return binder::Status::ok(); } } status_t DumpstateService::dump(int fd, const Vector<String16>&) { status_t DumpstateService::dump(int fd, const Vector<String16>&) { std::lock_guard<std::mutex> lock(lock_); if (ds_ == nullptr) { if (ds_ == nullptr) { dprintf(fd, "Bugreport not in progress yet"); dprintf(fd, "Bugreport not in progress yet"); return NO_ERROR; return NO_ERROR; Loading
cmds/dumpstate/dumpstate.cpp +16 −3 Original line number Original line Diff line number Diff line Loading @@ -239,6 +239,9 @@ static bool CopyFileToFd(const std::string& input_file, int out_fd) { } } static bool UnlinkAndLogOnError(const std::string& file) { static bool UnlinkAndLogOnError(const std::string& file) { if (file.empty()) { return false; } if (unlink(file.c_str())) { if (unlink(file.c_str())) { MYLOGE("Failed to unlink file (%s): %s\n", file.c_str(), strerror(errno)); MYLOGE("Failed to unlink file (%s): %s\n", file.c_str(), strerror(errno)); return false; return false; Loading @@ -246,7 +249,6 @@ static bool UnlinkAndLogOnError(const std::string& file) { return true; return true; } } int64_t GetModuleMetadataVersion() { int64_t GetModuleMetadataVersion() { auto binder = defaultServiceManager()->getService(android::String16("package_native")); auto binder = defaultServiceManager()->getService(android::String16("package_native")); if (binder == nullptr) { if (binder == nullptr) { Loading Loading @@ -2419,6 +2421,17 @@ Dumpstate::RunStatus Dumpstate::Run(int32_t calling_uid, const std::string& call return status; return status; } } void Dumpstate::Cancel() { CleanupTmpFiles(); android::os::UnlinkAndLogOnError(log_path_); for (int i = 0; i < NUM_OF_DUMPS; i++) { android::os::UnlinkAndLogOnError(ds.bugreport_internal_dir_ + "/" + kDumpstateBoardFiles[i]); } tombstone_data_.clear(); anr_data_.clear(); } /* /* * Dumps relevant information to a bugreport based on the given options. * Dumps relevant information to a bugreport based on the given options. * * Loading Loading @@ -2755,7 +2768,7 @@ bool Dumpstate::CalledByApi() const { return ds.options_->bugreport_fd.get() != -1 ? true : false; return ds.options_->bugreport_fd.get() != -1 ? true : false; } } void Dumpstate::CleanupFiles() { void Dumpstate::CleanupTmpFiles() { android::os::UnlinkAndLogOnError(tmp_path_); android::os::UnlinkAndLogOnError(tmp_path_); android::os::UnlinkAndLogOnError(screenshot_path_); android::os::UnlinkAndLogOnError(screenshot_path_); android::os::UnlinkAndLogOnError(path_); android::os::UnlinkAndLogOnError(path_); Loading @@ -2763,7 +2776,7 @@ void Dumpstate::CleanupFiles() { Dumpstate::RunStatus Dumpstate::HandleUserConsentDenied() { Dumpstate::RunStatus Dumpstate::HandleUserConsentDenied() { MYLOGD("User denied consent; deleting files and returning\n"); MYLOGD("User denied consent; deleting files and returning\n"); CleanupFiles(); CleanupTmpFiles(); return USER_CONSENT_DENIED; return USER_CONSENT_DENIED; } } Loading
cmds/dumpstate/dumpstate.h +4 −1 Original line number Original line Diff line number Diff line Loading @@ -334,6 +334,9 @@ class Dumpstate { RunStatus ParseCommandlineAndRun(int argc, char* argv[]); RunStatus ParseCommandlineAndRun(int argc, char* argv[]); /* Deletes in-progress files */ void Cancel(); /* Sets runtime options. */ /* Sets runtime options. */ void SetOptions(std::unique_ptr<DumpOptions> options); void SetOptions(std::unique_ptr<DumpOptions> options); Loading Loading @@ -502,7 +505,7 @@ class Dumpstate { // Removes the in progress files output files (tmp file, zip/txt file, screenshot), // Removes the in progress files output files (tmp file, zip/txt file, screenshot), // but leaves the log file alone. // but leaves the log file alone. void CleanupFiles(); void CleanupTmpFiles(); RunStatus HandleUserConsentDenied(); RunStatus HandleUserConsentDenied(); Loading