diff options
author | Julien Vuillaumier <jvuillaumier@nvidia.com> | 2015-01-22 13:42:58 +0000 |
---|---|---|
committer | Michael Bestas <mikeioannina@gmail.com> | 2015-01-26 02:43:59 +0000 |
commit | e43a8f1870ce6c3cc6d0aaca721d2a5f15322ab5 (patch) | |
tree | 93899fa1cd0bb61e90edbf96894ec30217080786 | |
parent | 60e8b15b2bedc9e7ce7e837af916e78e81e21ed4 (diff) | |
download | android_hardware_ril-stable/cm-12.0-caf-YNG4N.tar.gz android_hardware_ril-stable/cm-12.0-caf-YNG4N.tar.bz2 android_hardware_ril-stable/cm-12.0-caf-YNG4N.zip |
rild: enable tombstone on RIL crashstable/cm-12.0-caf-YNG4Nstable/cm-12.0-caf-YNG3Cstable/cm-12.0-caf-YNG1TAstable/cm-12.0-caf-YNG1Tcm-12.0-caf
Since Android L, process dumpable flag is verified in case of
crash before requesting tombstone capture by debuggerd.
As setuid operation clears dumpable flag for a process, reenable
flag in rild after its switch to UID radio (debuggable build only)
Change-Id: Id86b697e2a1e11744ccc50a3c9ef04faf079ed94
(cherry picked from commit a28b67c7ec595e55a4ff083b8b270dfd5f74a889)
-rw-r--r-- | rild/rild.c | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/rild/rild.c b/rild/rild.c index 65be7e0..34ed42d 100644 --- a/rild/rild.c +++ b/rild/rild.c @@ -96,6 +96,8 @@ static int make_argv(char * args, char ** argv) * Our group, cache, was set by init. */ void switchUser() { + char debuggable[PROP_VALUE_MAX]; + prctl(PR_SET_KEEPCAPS, 1, 0, 0, 0); setuid(AID_RADIO); @@ -117,6 +119,15 @@ void switchUser() { RLOGE("capset failed: %s", strerror(errno)); exit(EXIT_FAILURE); } + + /* + * Debuggable build only: + * Set DUMPABLE that was cleared by setuid() to have tombstone on RIL crash + */ + property_get("ro.debuggable", debuggable, "0"); + if (strcmp(debuggable, "1") == 0) { + prctl(PR_SET_DUMPABLE, 1, 0, 0, 0); + } } int main(int argc, char **argv) |