From 59972218f8c0d397fc50400a2b8b9be92ceeaf93 Mon Sep 17 00:00:00 2001 From: Josh Gao Date: Wed, 25 Jan 2017 11:45:58 -0800 Subject: zygote: don't drop CAP_SYS_PTRACE from the bounding set. crash_dump needs to acquire CAP_SYS_PTRACE to be able to ptrace processes with capabilities. selinux should hopefully be sufficient for restricting ptrace to processes that should do it. Bug: http://b/34694637 Test: debuggerd `pidof system_server` Change-Id: If46f0b9baa54529780f7767f309f76b102a42ab4 --- core/jni/com_android_internal_os_Zygote.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp index a32dbad7838f..516ab3808079 100644 --- a/core/jni/com_android_internal_os_Zygote.cpp +++ b/core/jni/com_android_internal_os_Zygote.cpp @@ -247,6 +247,11 @@ static void EnableKeepCapabilities(JNIEnv* env) { static void DropCapabilitiesBoundingSet(JNIEnv* env) { for (int i = 0; prctl(PR_CAPBSET_READ, i, 0, 0, 0) >= 0; i++) { + // Keep CAP_SYS_PTRACE in our bounding set so crash_dump can gain it. + if (i == CAP_SYS_PTRACE) { + continue; + } + int rc = prctl(PR_CAPBSET_DROP, i, 0, 0, 0); if (rc == -1) { if (errno == EINVAL) { -- cgit v1.2.3-59-g8ed1b