summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Vuillaumier <jvuillaumier@nvidia.com>2015-01-22 13:42:58 +0000
committerSteve Kondik <steve@cyngn.com>2015-03-25 22:04:46 -0700
commit9c6cfd9e80bfdeddcd4cc92c28c75bfe0e868c4c (patch)
tree8bdcd6ac4466f14a508e510f2a0ad535d026913c
parentae99135e14a7a1e991a88301f359305df54f5296 (diff)
downloadandroid_hardware_ril-9c6cfd9e80bfdeddcd4cc92c28c75bfe0e868c4c.tar.gz
android_hardware_ril-9c6cfd9e80bfdeddcd4cc92c28c75bfe0e868c4c.tar.bz2
android_hardware_ril-9c6cfd9e80bfdeddcd4cc92c28c75bfe0e868c4c.zip
rild: enable tombstone on RIL crash
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.c11
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)