summaryrefslogtreecommitdiffstats
path: root/bus/selinux.c
diff options
context:
space:
mode:
authorColin Walters <walters@verbum.org>2004-11-02 20:27:48 +0000
committerColin Walters <walters@verbum.org>2004-11-02 20:27:48 +0000
commit73ffe59d87864d61b9d22f199fc6375840bf39bb (patch)
tree2678c957ba9300cd075252562012f6f4efb6bff2 /bus/selinux.c
parentc7417009b1fe78fdad1ea2c397ecc1e656c33799 (diff)
2004-11-02 Colin Walters <walters@verbum.org>
* bus/selinux.c (bus_selinux_init): Split into two functions, bus_selinux_pre_init and bus_selinux_post_init. (bus_selinux_pre_init): Just determine whether SELinux is enabled. (bus_selinux_post_init): Do everything else. * bus/main.c (main): Call bus_selinux_pre_init before parsing config file, and bus_selinux_post_init after. This ensures that we don't lose the policyreload notification thread that bus_selinux_init created before forking previously. * bus/test-main.c (test_pre_hook): Update for split.
Diffstat (limited to 'bus/selinux.c')
-rw-r--r--bus/selinux.c23
1 files changed, 20 insertions, 3 deletions
diff --git a/bus/selinux.c b/bus/selinux.c
index de68da33..96acddfe 100644
--- a/bus/selinux.c
+++ b/bus/selinux.c
@@ -205,11 +205,10 @@ bus_selinux_enabled (void)
}
/**
- * Initialize the user space access vector cache (AVC) for D-BUS and set up
- * logging callbacks.
+ * Do early initialization; determine whether SELinux is enabled.
*/
dbus_bool_t
-bus_selinux_init (void)
+bus_selinux_pre_init (void)
{
#ifdef HAVE_SELINUX
int r;
@@ -227,7 +226,25 @@ bus_selinux_init (void)
}
selinux_enabled = r != 0;
+ return TRUE;
+#else
+ return TRUE;
+#endif
+}
+
+/**
+ * Initialize the user space access vector cache (AVC) for D-BUS and set up
+ * logging callbacks.
+ */
+dbus_bool_t
+bus_selinux_full_init (void)
+{
+#ifdef HAVE_SELINUX
+ int r;
+ char *bus_context;
+ _dbus_assert (bus_sid == SECSID_WILD);
+
if (!selinux_enabled)
{
_dbus_verbose ("SELinux not enabled in this kernel.\n");