diff --git a/refpolicy/Changelog b/refpolicy/Changelog
index 68b6a8d..ad1810e 100644
--- a/refpolicy/Changelog
+++ b/refpolicy/Changelog
@@ -1,3 +1,5 @@
+- Move xconsole_device_t from devices to xserver since it is
+ not actually a device, it is a named pipe.
- Handle nonexistant .fc and .if files in devel Makefile by
automatically creating empty files.
- Remove unused devfs_control_t.
diff --git a/refpolicy/policy/modules/kernel/devices.te b/refpolicy/policy/modules/kernel/devices.te
index bf16a3b..9e8164c 100644
--- a/refpolicy/policy/modules/kernel/devices.te
+++ b/refpolicy/policy/modules/kernel/devices.te
@@ -1,5 +1,5 @@
-policy_module(devices,1.1.5)
+policy_module(devices,1.1.6)
########################################
#
@@ -181,16 +181,6 @@ type zero_device_t;
dev_node(zero_device_t)
mls_trusted_object(zero_device_t)
-
-# TODO:
-
-# this is not actually a device
-# move it to xserver
-type xconsole_device_t;
-files_type(xconsole_device_t)
-fs_associate_tmpfs(xconsole_device_t)
-files_associate_tmp(xconsole_device_t)
-
########################################
#
# Rules for all device nodes
diff --git a/refpolicy/policy/modules/services/xserver.fc b/refpolicy/policy/modules/services/xserver.fc
index 77f634b..eb6e748 100644
--- a/refpolicy/policy/modules/services/xserver.fc
+++ b/refpolicy/policy/modules/services/xserver.fc
@@ -12,6 +12,11 @@ HOME_DIR/\.Xauthority.* -- gen_context(system_u:object_r:ROLE_xauth_home_t,s0)
')
#
+# /dev
+#
+/dev/xconsole -p gen_context(system_u:object_r:xconsole_device_t,s0)
+
+#
# /etc
#
diff --git a/refpolicy/policy/modules/services/xserver.if b/refpolicy/policy/modules/services/xserver.if
index 332cbd8..ec410cd 100644
--- a/refpolicy/policy/modules/services/xserver.if
+++ b/refpolicy/policy/modules/services/xserver.if
@@ -710,6 +710,42 @@ interface(`xserver_use_all_users_fonts',`
########################################
##
+## Set the attributes of the X windows console named pipes.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`xserver_setattr_console_pipes',`
+ gen_require(`
+ type xconsole_device_t;
+ ')
+
+ allow $1 xconsole_device_t:fifo_file setattr;
+')
+
+########################################
+##
+## Read and write the X windows console named pipe.
+##
+##
+##
+## Domain allowed access.
+##
+##
+#
+interface(`xserver_rw_console',`
+ gen_require(`
+ type xconsole_device_t;
+ ')
+
+ allow $1 xconsole_device_t:fifo_file { getattr read write };
+')
+
+########################################
+##
## Connect to XDM over a unix domain
## stream socket.
##
diff --git a/refpolicy/policy/modules/services/xserver.te b/refpolicy/policy/modules/services/xserver.te
index 6e318d6..9918eb5 100644
--- a/refpolicy/policy/modules/services/xserver.te
+++ b/refpolicy/policy/modules/services/xserver.te
@@ -1,5 +1,5 @@
-policy_module(xserver,1.1.3)
+policy_module(xserver,1.1.4)
########################################
#
@@ -19,6 +19,12 @@ files_type(iceauth_exec_t)
type xauth_exec_t;
files_type(xauth_exec_t)
+# this is not actually a device, its a pipe
+type xconsole_device_t;
+files_type(xconsole_device_t)
+fs_associate_tmpfs(xconsole_device_t)
+files_associate_tmp(xconsole_device_t)
+
type xdm_t;
# real declaration moved to mls until
# range_transition works in loadable modules
@@ -86,6 +92,8 @@ allow xdm_t self:udp_socket create_socket_perms;
# Supress permission check on .ICE-unix
dontaudit xdm_t ice_tmp_t:dir { getattr setattr };
+allow xdm_t xconsole_device_t:fifo_file { getattr setattr };
+
# Allow gdm to run gdm-binary
can_exec(xdm_t, xdm_exec_t)
@@ -438,8 +446,6 @@ optional_policy(`
')
ifdef(`TODO',`
-allow xdm_t xconsole_device_t:fifo_file { getattr setattr };
-
can_resmgrd_connect(xdm_t)
# Need to further investigate these permissions and
diff --git a/refpolicy/policy/modules/system/init.te b/refpolicy/policy/modules/system/init.te
index 15394d8..f640e63 100644
--- a/refpolicy/policy/modules/system/init.te
+++ b/refpolicy/policy/modules/system/init.te
@@ -1,5 +1,5 @@
-policy_module(init,1.3.6)
+policy_module(init,1.3.7)
gen_require(`
class passwd rootok;
@@ -726,19 +726,13 @@ optional_policy(`
')
optional_policy(`
- # init s cript wants to check if it needs to update windowmanagerlist
+ # Set device ownerships/modes.
+ xserver_setattr_console_pipes(initrc_t)
+
+ # init script wants to check if it needs to update windowmanagerlist
xserver_read_xdm_rw_config(initrc_t)
')
optional_policy(`
zebra_read_config(initrc_t)
')
-
-ifdef(`TODO',`
-# Set device ownerships/modes.
-allow initrc_t xconsole_device_t:fifo_file setattr;
-
-ifdef(`distro_redhat', `
- allow initrc_t device_t:dir create;
-')
-') dnl end TODO
diff --git a/refpolicy/policy/modules/system/logging.te b/refpolicy/policy/modules/system/logging.te
index f31af3a..8a75634 100644
--- a/refpolicy/policy/modules/system/logging.te
+++ b/refpolicy/policy/modules/system/logging.te
@@ -1,5 +1,5 @@
-policy_module(logging,1.3.2)
+policy_module(logging,1.3.3)
########################################
#
@@ -369,7 +369,7 @@ optional_policy(`
udev_read_db(syslogd_t)
')
-ifdef(`TODO',`
-# log to the xconsole
-allow syslogd_t xconsole_device_t:fifo_file { ioctl read write };
-') dnl end TODO
+optional_policy(`
+ # log to the xconsole
+ xserver_rw_console(syslogd_t)
+')