summaryrefslogtreecommitdiffstats
path: root/debuggerd
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2016-05-05 21:57:30 +0000
committerandroid-build-merger <android-build-merger@google.com>2016-05-05 21:57:30 +0000
commitf89a23f27bdade1e1e3b55a76ffe70355774c610 (patch)
tree450700863df78defc827826670cae234ed46c46c /debuggerd
parent512af70bc47804cf32b753f818503e58c88b6c81 (diff)
parentfd1eee58f985b3d528ca352ff278d7b200390ab2 (diff)
downloadsystem_core-f89a23f27bdade1e1e3b55a76ffe70355774c610.tar.gz
system_core-f89a23f27bdade1e1e3b55a76ffe70355774c610.tar.bz2
system_core-f89a23f27bdade1e1e3b55a76ffe70355774c610.zip
Merge "Set groups before dropping privileges." into nyc-dev
am: fd1eee58f9 * commit 'fd1eee58f985b3d528ca352ff278d7b200390ab2': Set groups before dropping privileges. Change-Id: I85c98abb0e7cc3b36ec714899540d65e6ca908c7
Diffstat (limited to 'debuggerd')
-rw-r--r--debuggerd/debuggerd.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/debuggerd/debuggerd.cpp b/debuggerd/debuggerd.cpp
index d2e6c2971..4a1f4dbb9 100644
--- a/debuggerd/debuggerd.cpp
+++ b/debuggerd/debuggerd.cpp
@@ -512,13 +512,21 @@ static bool perform_dump(const debugger_request_t& request, int fd, int tombston
}
static bool drop_privileges() {
+ // AID_LOG: for reading the logs data associated with the crashing process.
+ // AID_READPROC: for reading /proc/<PID>/{comm,cmdline}.
+ gid_t groups[] = { AID_DEBUGGERD, AID_LOG, AID_READPROC };
+ if (setgroups(sizeof(groups)/sizeof(groups[0]), groups) != 0) {
+ ALOGE("debuggerd: failed to setgroups: %s", strerror(errno));
+ return false;
+ }
+
if (setresgid(AID_DEBUGGERD, AID_DEBUGGERD, AID_DEBUGGERD) != 0) {
- ALOGE("debuggerd: failed to setresgid");
+ ALOGE("debuggerd: failed to setresgid: %s", strerror(errno));
return false;
}
if (setresuid(AID_DEBUGGERD, AID_DEBUGGERD, AID_DEBUGGERD) != 0) {
- ALOGE("debuggerd: failed to setresuid");
+ ALOGE("debuggerd: failed to setresuid: %s", strerror(errno));
return false;
}