Merge "debuggerd: remove obsolete dumpable check."
am: b038995d29
Change-Id: Ib120244b965f10ff88c917885beca011ee28a223
This commit is contained in:
commit
ec172b5f36
1 changed files with 0 additions and 41 deletions
|
|
@ -45,42 +45,6 @@ static bool send_signal(pid_t pid, bool backtrace) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool check_dumpable(pid_t pid) {
|
|
||||||
// /proc/<pid> is owned by the effective UID of the process.
|
|
||||||
// Ownership of most of the other files in /proc/<pid> varies based on PR_SET_DUMPABLE.
|
|
||||||
// If PR_GET_DUMPABLE would return 0, they're owned by root, instead.
|
|
||||||
std::string proc_pid_path = android::base::StringPrintf("/proc/%d/", pid);
|
|
||||||
std::string proc_pid_status_path = proc_pid_path + "/status";
|
|
||||||
|
|
||||||
unique_fd proc_pid_fd(open(proc_pid_path.c_str(), O_DIRECTORY | O_RDONLY | O_CLOEXEC));
|
|
||||||
if (proc_pid_fd == -1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
unique_fd proc_pid_status_fd(openat(proc_pid_fd, "status", O_RDONLY | O_CLOEXEC));
|
|
||||||
if (proc_pid_status_fd == -1) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
struct stat proc_pid_st;
|
|
||||||
struct stat proc_pid_status_st;
|
|
||||||
if (fstat(proc_pid_fd.get(), &proc_pid_st) != 0 ||
|
|
||||||
fstat(proc_pid_status_fd.get(), &proc_pid_status_st) != 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
// We can't figure out if a process is dumpable if its effective UID is root, but that's fine
|
|
||||||
// because being root bypasses the PR_SET_DUMPABLE check for ptrace.
|
|
||||||
if (proc_pid_st.st_uid == 0) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (proc_pid_status_st.st_uid == 0) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool debuggerd_trigger_dump(pid_t pid, unique_fd output_fd, DebuggerdDumpType dump_type,
|
bool debuggerd_trigger_dump(pid_t pid, unique_fd output_fd, DebuggerdDumpType dump_type,
|
||||||
int timeout_ms) {
|
int timeout_ms) {
|
||||||
LOG(INFO) << "libdebuggerd_client: started dumping process " << pid;
|
LOG(INFO) << "libdebuggerd_client: started dumping process " << pid;
|
||||||
|
|
@ -114,11 +78,6 @@ bool debuggerd_trigger_dump(pid_t pid, unique_fd output_fd, DebuggerdDumpType du
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!check_dumpable(pid)) {
|
|
||||||
dprintf(output_fd.get(), "target pid %d is not dumpable\n", pid);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
sockfd.reset(socket(AF_LOCAL, SOCK_SEQPACKET, 0));
|
sockfd.reset(socket(AF_LOCAL, SOCK_SEQPACKET, 0));
|
||||||
if (sockfd == -1) {
|
if (sockfd == -1) {
|
||||||
PLOG(ERROR) << "libdebugger_client: failed to create socket";
|
PLOG(ERROR) << "libdebugger_client: failed to create socket";
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue