diff --git a/policy/modules/services/dbus.if b/policy/modules/services/dbus.if
index 87ba7d1..d76131b 100644
--- a/policy/modules/services/dbus.if
+++ b/policy/modules/services/dbus.if
@@ -88,7 +88,7 @@ template(`dbus_role_template',`
files_tmp_filetrans($1_dbusd_t, session_dbusd_tmp_t, { file dir })
domtrans_pattern($3, dbusd_exec_t, $1_dbusd_t)
- allow $3 $1_dbusd_t:process { sigkill signal };
+ allow $3 $1_dbusd_t:process { signull sigkill signal };
# cjp: this seems very broken
corecmd_bin_domtrans($1_dbusd_t, $3)
@@ -127,6 +127,7 @@ template(`dbus_role_template',`
fs_getattr_romfs($1_dbusd_t)
fs_getattr_xattr_fs($1_dbusd_t)
fs_list_inotifyfs($1_dbusd_t)
+ fs_dontaudit_list_nfs($1_dbusd_t)
selinux_get_fs_mount($1_dbusd_t)
selinux_validate_context($1_dbusd_t)
@@ -146,6 +147,8 @@ template(`dbus_role_template',`
seutil_read_config($1_dbusd_t)
seutil_read_default_contexts($1_dbusd_t)
+ term_use_all_terms($1_dbusd_t)
+
userdom_read_user_home_content_files($1_dbusd_t)
ifdef(`hide_broken_symptoms', `
@@ -256,7 +259,46 @@ interface(`dbus_read_config',`
########################################
##
-## Connect to the the session DBUS
+## Read system dbus lib files.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`dbus_read_lib_files',`
+ gen_require(`
+ type system_dbusd_var_lib_t;
+ ')
+
+ files_search_var_lib($1)
+ read_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t)
+')
+
+########################################
+##
+## Create, read, write, and delete
+## system dbus lib files.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`dbus_manage_lib_files',`
+ gen_require(`
+ type system_dbusd_var_lib_t;
+ ')
+
+ files_search_var_lib($1)
+ manage_files_pattern($1, system_dbusd_var_lib_t, system_dbusd_var_lib_t)
+')
+
+########################################
+##
+## Connect to the system DBUS
## for service (acquire_svc).
##
##
@@ -276,6 +318,34 @@ interface(`dbus_connect_session_bus',`
########################################
##
+## Allow a application domain to be started
+## by the session dbus.
+##
+##
+##
+## Type to be used as a domain.
+##
+##
+##
+##
+## Type of the program to be used as an
+## entry point to this domain.
+##
+##
+#
+interface(`dbus_session_domain',`
+ gen_require(`
+ attribute session_bus_type;
+ ')
+
+ domtrans_pattern(session_bus_type, $2, $1)
+
+ dbus_session_bus_client($1)
+ dbus_connect_session_bus($1)
+')
+
+########################################
+##
## Connect to the system DBUS
## for service (acquire_svc).
##
@@ -364,6 +434,10 @@ interface(`dbus_system_domain',`
dbus_system_bus_client($1)
dbus_connect_system_bus($1)
+ ps_process_pattern(system_dbusd_t, $1)
+
+ userdom_read_all_users_state($1)
+
ifdef(`hide_broken_symptoms', `
dontaudit $1 system_dbusd_t:netlink_selinux_socket { read write };
')
diff --git a/policy/modules/services/dbus.te b/policy/modules/services/dbus.te
index 5c3924d..f9c827b 100644
--- a/policy/modules/services/dbus.te
+++ b/policy/modules/services/dbus.te
@@ -1,5 +1,5 @@
-policy_module(dbus, 1.12.0)
+policy_module(dbus, 1.12.1)
gen_require(`
class dbus all_dbus_perms;
@@ -86,6 +86,7 @@ dev_read_urand(system_dbusd_t)
dev_read_sysfs(system_dbusd_t)
fs_getattr_all_fs(system_dbusd_t)
+fs_list_inotifyfs(system_dbusd_t)
fs_search_auto_mountpoints(system_dbusd_t)
fs_dontaudit_list_nfs(system_dbusd_t)
@@ -121,6 +122,7 @@ files_read_usr_files(system_dbusd_t)
init_use_fds(system_dbusd_t)
init_use_script_ptys(system_dbusd_t)
+init_domtrans_script(system_dbusd_t)
logging_send_audit_msgs(system_dbusd_t)
logging_send_syslog_msg(system_dbusd_t)
@@ -140,6 +142,7 @@ optional_policy(`
')
optional_policy(`
+ policykit_dbus_chat(system_dbusd_t)
policykit_domtrans_auth(system_dbusd_t)
policykit_search_lib(system_dbusd_t)
')