summaryrefslogtreecommitdiffstats
path: root/cmds
diff options
context:
space:
mode:
authorStephen Smalley <sds@tycho.nsa.gov>2013-04-16 12:16:50 -0400
committerStephen Smalley <sds@tycho.nsa.gov>2013-07-26 15:48:07 -0400
commitbd558d61871218f5b13df2fe4b7cc3b530ee947c (patch)
tree3a4be97a2c9153c40de8d9afaf0d003048074427 /cmds
parent082fc1cae6a0c283de3ad0d848e0757de3154d0b (diff)
downloadframeworks_native-bd558d61871218f5b13df2fe4b7cc3b530ee947c.zip
frameworks_native-bd558d61871218f5b13df2fe4b7cc3b530ee947c.tar.gz
frameworks_native-bd558d61871218f5b13df2fe4b7cc3b530ee947c.tar.bz2
Handle policy reloads within installd rather than restarting it.
Restarting installd upon policy reloads has reportedly caused stability problems for some users. Stop restarting installd and instead handle policy reloads within it. Change-Id: I697a736d8e414cfc6cfa131ed7b97c7f7694d022 Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
Diffstat (limited to 'cmds')
-rw-r--r--cmds/installd/installd.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/cmds/installd/installd.c b/cmds/installd/installd.c
index c918633..83b2b4e 100644
--- a/cmds/installd/installd.c
+++ b/cmds/installd/installd.c
@@ -16,6 +16,8 @@
#include <sys/capability.h>
#include <linux/prctl.h>
+#include <selinux/android.h>
+#include <selinux/avc.h>
#include "installd.h"
@@ -525,6 +527,7 @@ int main(const int argc, const char *argv[]) {
struct sockaddr addr;
socklen_t alen;
int lsocket, s, count;
+ int selinux_enabled = (is_selinux_enabled() > 0);
ALOGI("installd firing up\n");
@@ -538,6 +541,11 @@ int main(const int argc, const char *argv[]) {
exit(1);
}
+ if (selinux_enabled && selinux_status_open(true) < 0) {
+ ALOGE("Could not open selinux status; exiting.\n");
+ exit(1);
+ }
+
drop_privileges();
lsocket = android_get_control_socket(SOCKET_PATH);
@@ -576,6 +584,9 @@ int main(const int argc, const char *argv[]) {
break;
}
buf[count] = 0;
+ if (selinux_enabled && selinux_status_updated() > 0) {
+ selinux_android_seapp_context_reload();
+ }
if (execute(s, buf)) break;
}
ALOGI("closing connection\n");