summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJulien Vuillaumier <jvuillaumier@nvidia.com>2015-01-22 13:42:58 +0000
committerMichael Bestas <mikeioannina@gmail.com>2015-01-26 02:43:59 +0000
commite43a8f1870ce6c3cc6d0aaca721d2a5f15322ab5 (patch)
tree93899fa1cd0bb61e90edbf96894ec30217080786
parent60e8b15b2bedc9e7ce7e837af916e78e81e21ed4 (diff)
downloadandroid_hardware_ril-stable/cm-12.0-caf-YNG1TA.tar.gz
android_hardware_ril-stable/cm-12.0-caf-YNG1TA.tar.bz2
android_hardware_ril-stable/cm-12.0-caf-YNG1TA.zip
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)