Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Snippets Groups Projects
Commit 970177a3 authored by Josh Gao's avatar Josh Gao Committed by android-build-merger
Browse files

Merge "debuggerd: remove obsolete dumpable check." am: b038995d am: ec172b5f

am: 05930f71

Change-Id: I5ca838f564a83a81e68054fedb0d68cf9e3ac468
parents b7b9f710 05930f71
No related branches found
No related tags found
No related merge requests found
...@@ -45,42 +45,6 @@ static bool send_signal(pid_t pid, bool backtrace) { ...@@ -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 ...@@ -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";
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment