diff --git a/docs/macro_conversion_guide b/docs/macro_conversion_guide
index f01429c..0d6aeb2 100644
--- a/docs/macro_conversion_guide
+++ b/docs/macro_conversion_guide
@@ -301,16 +301,7 @@ optional_policy(`kerberos.te',`
 #
 # can_ldap(): complete
 #
-optional_policy(`ldap.te',`
-	allow $1 self:tcp_socket create_socket_perms;
-	corenet_tcp_sendrecv_all_if($1)
-	corenet_raw_sendrecv_all_if($1)
-	corenet_tcp_sendrecv_all_nodes($1)
-	corenet_raw_sendrecv_all_nodes($1)
-	corenet_tcp_sendrecv_ldap_port($1)
-	corenet_tcp_bind_all_nodes($1)
-	sysnet_read_config($1)
-')
+sysnet_use_ldap($1)
 
 #
 # can_loadpol(): complete
@@ -421,18 +412,14 @@ allow $1 $2:process ptrace;
 allow $2 $1:process sigchld;
 
 #
+# can_portmap():
+#
+sysnet_use_portmap($1)
+
+#
 # can_resolve(): complete
 #
-tunable_policy(`use_dns',`
-	allow $1 self:udp_socket create_socket_perms;
-	corenet_udp_sendrecv_all_if($1)
-	corenet_raw_sendrecv_all_if($1)
-	corenet_udp_sendrecv_all_nodes($1)
-	corenet_raw_sendrecv_all_nodes($1)
-	corenet_udp_sendrecv_dns_port($1)
-	corenet_udp_bind_all_nodes($1)
-	sysnet_read_config($1)
-')
+sysnet_dns_name_resolve($1)
 
 #
 # can_setbool(): complete
@@ -790,7 +777,7 @@ optional_policy(`nscd.te',`
 #
 # legacy_domain(): complete
 #
-allow $1_t self:process execmem;
+allow $1_t self:process { execmem execstack };
 libs_legacy_use_shared_libs($1_t)
 libs_legacy_use_ld_so($1_t)
 
@@ -827,6 +814,30 @@ can_exec($1, $2)
 allow $1 $2:{ sock_file fifo_file } { create ioctl read getattr lock write setattr append link unlink rename };
 
 #
+# polyinstantiater():
+#
+ifdef(`support_polyinstantiation', `
+# Need to give access to /selinux/member
+selinux_compute_member($1)
+# Need sys_admin capability for mounting
+allow $1 self:capability sys_admin;
+# Need to give access to the directories to be polyinstantiated
+allow $1 polydir:dir { getattr mounton add_name create setattr write search };
+# Need to give access to the polyinstantiated subdirectories
+allow $1 polymember:dir {getattr search };
+# Need to give access to parent directories where original
+# is remounted for polyinstantiation aware programs (like gdm)
+allow $1 polyparent:dir { getattr mounton };
+# Need to give permission to create directories where applicable
+allow $1 polymember: dir { create setattr };
+allow $1 polydir: dir { write add_name };
+allow $1 self:process setfscreate;
+allow $1 polyparent:dir { write add_name };
+# Default type for mountpoints
+allow $1 poly_t:dir { create mounton };
+')
+
+#
 # pty_slave_label():
 #
 type $1_devpts_t, file_type, sysadmfile, ptyfile $2;
diff --git a/strict/ChangeLog b/strict/ChangeLog
index 0e38453..20fcfc3 100644
--- a/strict/ChangeLog
+++ b/strict/ChangeLog
@@ -1,3 +1,206 @@
+1.26 2005-09-06
+	* Updated version for release.
+
+1.25.4 2005-08-10
+	* Merged small patches from Russell Coker for the restorecon,
+	kudzu, lvm, radvd, and spamassasin policies.
+	* Added fs_use_trans rule for mqueue from Mark Gebhart to support
+	the work he has done on providing SELinux support for mqueue.
+	* Merged a patch from Dan Walsh. Removes the user_can_mount
+	tunable.  Adds disable_evolution_trans and disable_thunderbird_trans
+	booleans.  Adds the nscd_client_domain attribute to insmod_t.
+	Removes the user_ping boolean from targeted policy.  Adds
+	hugetlbfs, inotifyfs, and mqueue filesystems to genfs_contexts.
+	Adds the isakmp_port for vpnc.  Creates the pptp daemon domain.
+	Allows getty to run sbin_t for pppd.  Allows initrc to write to
+	default_t for booting.  Allows Hotplug_t sys_rawio for prism54
+	card at boot.  Other minor fixes.
+
+1.25.3 2005-07-18
+	* Merged patch from Dan Walsh.  Adds auth_bool attribute to allow
+	domains to have read access to shadow_t.  Creates pppd_can_insmod
+	boolean to control the loading of modem kernel modules.  Allows
+	nfs to export noexattrfile types.  Allows unix_chpwd to access
+	cert files and random devices for encryption purposes.  Other
+	minor cleanups and fixes.
+
+1.25.2 2005-07-11
+	* Merged patch from Dan Walsh.  Added allow_ptrace boolean to
+	allow sysadm_t to ptrace and debug apps.  Gives auth_chkpwd the
+	audit_control and audit_write capabilities.  Stops targeted policy
+	from transitioning from unconfined_t to netutils.  Allows cupsd to
+	audit messages.  Gives prelink the execheap, execmem, and execstack
+	permissions by default.  Adds can_winbind boolean and functions to
+	better handle samba and winbind communications.  Eliminates
+	allow_execmod checks around texrel_shlib_t libraries.  Other minor
+	cleanups and fixes.
+	
+1.25.1 2005-07-05
+	* Moved role_tty_type_change, reach_sysadm, and priv_user macros
+	from user.te to user_macros.te as suggested by Steve.
+	* Modified admin_domain macro so autrace would work and removed
+	privuser attribute for dhcpc as suggested by Russell Coker.
+	* Merged rather large patch from Dan Walsh.  Moves
+	targeted/strict/mls policies closer together.  Adds local.te for
+	users to customize.  Includes minor fixes to auditd, cups,
+	cyrus_imapd, dhcpc, and dovecot.  Includes Russell Coker's patch
+	that defines all ports in network.te.  Ports are always defined
+	now, no ifdefs are used in network.te.  Also includes Ivan
+	Gyurdiev's user home directory policy patches.  These patches add
+	alsa, bonobo, ethereal, evolution, gconf, gnome, gnome_vfs,
+	iceauth, orbit, and thunderbird policy.  They create read_content,
+	write_trusted, and write_untrusted macros in content.te.  They
+	create network_home, write_network_home, read_network_home,
+	base_domain_ro_access, home_domain_access, home_domain, and
+	home_domain_ro macros in home_macros.te.  They also create
+	$3_read_content, $3_write_content, and write_untrusted booleans.
+	
+1.24 2005-06-20
+	* Updated version for release.
+
+1.23.18 2005-05-31
+	* Merged minor fixes to pppd.fc and courier.te by Russell Coker.
+	* Removed devfsd policy as suggested by Russell Coker.
+	* Merged patch from Dan Walsh.  Includes beginnings of Ivan
+	Gyurdiev's Font Config policy.  Don't transition to fsadm_t from
+	unconfined_t (sysadm_t) in targeted policy.  Add support for
+	debugfs in modutil.  Allow automount to create and delete
+	directories in /root and /home dirs.  Move can_ypbind to
+	chkpwd_macro.te.  Allow useradd to create additional files and
+	types via the skell mechanism.  Other minor cleanups and fixes.
+
+1.23.17 2005-05-23
+	* Merged minor fixes by Petre Rodan to the daemontools, dante,
+	gpg, kerberos, and ucspi-tcp policies.
+	* Merged minor fixes by Russell Coker to the bluetooth, crond,
+	initrc, postfix, and udev  policies.  Modifies constraints so that
+	newaliases can be run.  Modifies types.fc so that objects in
+	lost+found directories will not be relabled.
+	* Modified fc rules for nvidia.
+	* Added Chad Sellers policy for polyinstantiation support, which
+	creates the polydir, polyparent, and polymember attributes.  Also
+	added the support_polyinstantiation tunable.
+	* Merged patch from Dan Walsh.  Includes mount_point attribute,
+	read_font macros and some other policy fixes from Ivan Gyurdiev.
+	Adds privkmsg and secadmfile attributes and ddcprobe policy.
+	Removes the use_syslogng boolean.  Many other minor fixes.
+
+1.23.16 2005-05-13
+	* Added rdisc policy from Russell Coker.
+	* Merged minor fix to named policy by Petre Rodan.
+	* Merged minor fixes to policy from Russell Coker for kudzu,
+	named, screen, setfiles, telnet, and xdm.
+	* Merged minor fix to Makefile from Russell Coker.
+
+1.23.15 2005-05-06
+	* Added tripwire and yam policy from David Hampton.
+	* Merged minor fixes to amavid and a clarification to the
+	httpdcontent attribute comments from David Hampton.
+	* Merged patch from Dan Walsh.  Includes fixes for restorecon,
+	games, and postfix from Russell Coker.  Adds support for debugfs.
+	Restores support for reiserfs.  Allows udev to work with tmpfs_t
+	before /dev is labled.  Removes transition from sysadm_t
+	(unconfined_t) to ifconfig_t for the targeted policy.  Other minor
+	cleanups and fixes.
+
+1.23.14 2005-04-29
+	* Added afs policy from Andrew Reisse.
+	* Merged patch from Lorenzo Hernández García-Hierro which defines
+	execstack and execheap permissions.  The patch excludes these
+	permissions from general_domain_access and updates the macros for
+	X, legacy binaries, users, and unconfined domains.
+	* Added nlmsg_relay permisison where netlink_audit_socket class is
+	used.  Added nlmsg_readpriv permission to auditd_t and auditctl_t.
+	* Merged some minor cleanups from Russell Coker and David Hampton.
+	* Merged patch from Dan Walsh.  Many changes made to allow
+	targeted policy to run closer to strict and now almost all of
+	non-userspace is protected via SELinux.  Kernel is now in
+	unconfined_domain for targeted and runs as root:system_r:kernel_t.
+	Added transitionbool to daemon_sub_domain, mainly to turn off
+	httpd_suexec transitioning.  Implemented web_client_domain
+	name_connect rules.  Added yp support for cups.  Now the real
+	hotplug, udev, initial_sid_contexts are used for the targeted
+	policy.  Other minor cleanups and fixes.  Auditd fixes by Paul
+	Moore.
+
+1.23.13 2005-04-22
+	* Merged more changes from Dan Walsh to initrc_t for removal of
+	unconfined_domain.
+	* Merged Dan Walsh's split of auditd policy into auditd_t for the
+	audit daemon and auditctl_t for the autoctl program.
+	* Added use of name_connect to uncond_can_ypbind macro by Dan
+	Walsh.
+	* Merged other cleanup and fixes by Dan Walsh.
+
+1.23.12 2005-04-20
+	* Merged Dan Walsh's Netlink changes to handle new auditing pam
+	modules.
+	* Merged Dan Walsh's patch removing the sysadmfile attribute from
+	policy files to separate sysadm_t from secadm_t.
+	* Added CVS and uucpd policy from Dan Walsh.
+	* Cleanup by Dan Walsh to handle turning off unlimitedRC.
+	* Merged Russell Coker's fixes to ntpd, postgrey, and named
+	policy.
+	* Cleanup of chkpwd_domain and added permissions to su_domain
+	macro due to pam changes to support audit.
+	* Added nlmsg_relay and nlmsg_readpriv permissions to the
+	netlink_audit_socket class.
+
+1.23.11 2005-04-14
+	* Merged Dan Walsh's separation of the security manager and system
+	administrator.
+	* Removed screensaver.te as suggested by Thomas Bleher
+	* Cleanup of typealiases that are no longer used by Thomas Bleher.
+	* Cleanup of fc files and additional rules for SuSE by Thomas
+	Bleher.
+	* Merged changes to auditd and named policy by Russell Coker.
+	* Merged MLS change from Darrel Goeddel to support the policy
+	hierarchy patch.
+
+1.23.10 2005-04-08
+	* Removed pump.te, pump.fc, and targeted/domains/program/modutil.te
+
+1.23.9 2005-04-07
+	* Merged diffs from Dan Walsh.  Includes Ivan Gyurdiev's cleanup
+	of x_client apps.
+	* Added dmidecode policy from Ivan Gyurdiev.
+
+1.23.8 2005-04-05
+	* Added netlink_kobject_uevent_socket class.
+	* Removed empty files pump.te and pump.fc.
+	* Added NetworkManager policy from Dan Walsh.
+	* Merged Dan Walsh's major restructuring of Apache's policy.
+
+1.23.7 2005-04-04
+	* Merged David Hampton's amavis and clamav cleanups.
+	* Added David Hampton's dcc, pyzor, and razor policy.
+	
+1.23.6 2005-04-01
+	* Merged cleanup of the Makefile and other stuff from Dan Walsh.
+	Dan's patch includes some desktop changes from Ivan Gyurdiev.
+	* Merged Thomas Bleher's patches which increase the usage of
+	lock_domain() and etc_domain(), changes var_lib_DOMAIN_t usage to
+	DOMAIN_var_lib_t, and removes use of notdevfile_class_set where
+	possible. 
+	* Merged Greg Norris's cleanup of fetchmail.
+	
+1.23.5 2005-03-23
+	* Added name_connect support from Dan Walsh.
+	* Added httpd_unconfined_t from Dan Walsh.
+	* Merged cleanup of assert.te to allow unresticted full access
+	from Dan Walsh.
+	
+1.23.4 2005-03-21
+	* Merged diffs from Dan Walsh:  
+	* Cleanup of x_client_macro, tvtime, mozilla, and mplayer by Ivan 
+	Gyurdiev.  
+	* Added syslogng support to syslog.te.
+	
+1.23.3 2005-03-15
+	* Added policy for nx_server from Thomas Bleher.
+	* Added policies for clockspeed, daemontools, djbdns, ucspi-tcp, and
+	publicfile from Petre Rodan.
+	
 1.23.2 2005-03-14
 	* Merged diffs from Dan Walsh.  Dan's patch includes Ivan Gyurdiev's 
 	gift policy.
diff --git a/strict/Makefile b/strict/Makefile
index 5a70bc7..fec8c3e 100644
--- a/strict/Makefile
+++ b/strict/Makefile
@@ -60,7 +60,7 @@ POLICYFILES += $(USER_FILES)
 POLICYFILES += constraints
 POLICYFILES += $(DEFCONTEXTFILES)
 CONTEXTFILES = $(DEFCONTEXTFILES)
-POLICY_DIRS = domains/program domains/misc
+POLICY_DIRS = domains domains/program domains/misc macros macros/program
 
 UNUSED_TE_FILES := $(wildcard domains/program/unused/*.te)
 
@@ -70,19 +70,19 @@ FCFILES=file_contexts/types.fc $(patsubst domains/program/%.te,file_contexts/pro
 CONTEXTFILES += $(FCFILES)
 
 APPDIR=$(CONTEXTPATH)
-APPFILES = $(addprefix $(APPDIR)/,default_contexts default_type initrc_context failsafe_context userhelper_context removable_context dbus_contexts customizable_types) $(CONTEXTPATH)/files/media
+APPFILES = $(addprefix $(APPDIR)/,default_contexts default_type initrc_context failsafe_context userhelper_context removable_context dbus_contexts customizable_types port_types) $(CONTEXTPATH)/files/media
 CONTEXTFILES += $(wildcard appconfig/*_context*) appconfig/media
 
 ROOTFILES = $(addprefix $(APPDIR)/users/,root)
 
 all:  policy
 
-tmp/valid_fc: $(APPFILES) $(ROOTFILES) $(LOADPATH) $(FCPATH) 
-	@echo "Validating file_contexts ..."	
-	$(SETFILES) -q -c $(LOADPATH) $(FCPATH)
+tmp/valid_fc: $(LOADPATH) $(FC) 
+	@echo "Validating file contexts files ..."	
+	$(SETFILES) -q -c $(LOADPATH) $(FC)
 	@touch tmp/valid_fc
 
-install: tmp/valid_fc $(USERPATH)/local.users
+install: $(FCPATH) $(APPFILES) $(ROOTFILES) $(USERPATH)/local.users
 
 $(USERPATH)/system.users: $(ALL_TUNABLES) $(USER_FILES) policy.conf
 	@mkdir -p $(USERPATH)
@@ -91,61 +91,64 @@ $(USERPATH)/system.users: $(ALL_TUNABLES) $(USER_FILES) policy.conf
 	@echo "# This file is replaced on reinstalls of this policy." >> tmp/system.users
 	@echo "# Please edit local.users to make local changes." >> tmp/system.users
 	@echo "#" >> tmp/system.users
-	m4 $(ALL_TUNABLES) tmp/program_used_flags.te $(USER_FILES) | grep -v "^#" >> tmp/system.users
+	@m4 $(ALL_TUNABLES) tmp/program_used_flags.te $(USER_FILES) | grep -v "^#" >> tmp/system.users
 	install -m 644 tmp/system.users $@
 
 $(USERPATH)/local.users: local.users
 	@mkdir -p $(USERPATH)
-	install -C -b -m 644 $< $@
+	install -b -m 644 $< $@
 
 $(CONTEXTPATH)/files/media: appconfig/media
-	mkdir -p $(CONTEXTPATH)/files/
+	@mkdir -p $(CONTEXTPATH)/files/
 	install -m 644 $< $@
 
 $(APPDIR)/default_contexts: appconfig/default_contexts
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	install -m 644 $< $@
 
 $(APPDIR)/removable_context: appconfig/removable_context
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	install -m 644 $< $@
 
 $(APPDIR)/customizable_types: policy.conf
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	@grep "^type .*customizable" $< | cut -d',' -f1 | cut -d' ' -f2 > tmp/customizable_types
 	install -m 644 tmp/customizable_types $@ 
 
+$(APPDIR)/port_types: policy.conf
+	@mkdir -p $(APPDIR)
+	@grep "^type .*port_type" $< | cut -d',' -f1 | cut -d' ' -f2 > tmp/port_types
+	install -m 644 tmp/port_types $@ 
+
 $(APPDIR)/default_type: appconfig/default_type
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	install -m 644 $< $@
 
 $(APPDIR)/userhelper_context: appconfig/userhelper_context
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	install -m 644 $< $@
 
 $(APPDIR)/initrc_context: appconfig/initrc_context
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	install -m 644 $< $@
 
 $(APPDIR)/failsafe_context: appconfig/failsafe_context
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	install -m 644 $< $@
 
 $(APPDIR)/dbus_contexts: appconfig/dbus_contexts
-	mkdir -p $(APPDIR)
+	@mkdir -p $(APPDIR)
 	install -m 644 $< $@
 
 $(APPDIR)/users/root: appconfig/root_default_contexts
-	mkdir -p $(APPDIR)/users
+	@mkdir -p $(APPDIR)/users
 	install -m 644 $< $@
 
-$(LOADPATH):  policy.conf $(CHECKPOLICY)
-	mkdir -p $(POLICYPATH)
+$(LOADPATH): policy.conf $(CHECKPOLICY) 
+	@echo "Compiling policy ..."
+	@mkdir -p $(POLICYPATH)
 	$(CHECKPOLICY) $(CHECKPOLMLS) -o $@ policy.conf
 ifneq ($(MLS),y)
-ifneq ($(VERS),18)
-	$(CHECKPOLICY) -c 18 -o $(POLICYPATH)/policy.18 policy.conf
-endif
 endif
 # Note: Can't use install, so not sure how to deal with mode, user, and group
 #	other than by default.
@@ -154,46 +157,39 @@ policy: $(POLICYVER)
 
 $(POLICYVER):  policy.conf $(FC) $(CHECKPOLICY)
 	$(CHECKPOLICY) $(CHECKPOLMLS) -o $@ policy.conf
-ifneq ($(MLS),y)
-ifneq ($(VERS),18)
-	$(CHECKPOLICY) -c 18 -o policy.18 policy.conf
-endif
-endif
-	@echo "Validating file_contexts ..."
+	@echo "Validating file contexts files ..."
 	$(SETFILES) -q -c $(POLICYVER) $(FC)
 
-reload tmp/load: $(FCPATH) $(LOADPATH)
-ifeq ($(VERS), $(KERNVERS))
+reload tmp/load: $(LOADPATH) 
+	@echo "Loading Policy ..."
 	$(LOADPOLICY) $(LOADPATH)
-else
-	$(LOADPOLICY) $(POLICYPATH)/policy.18
-endif
 	touch tmp/load
 
-load: tmp/load
+load: tmp/load $(FCPATH) 
 
 enableaudit: policy.conf 
 	grep -v dontaudit policy.conf > policy.audit
 	mv policy.audit policy.conf
 
 policy.conf: $(POLICYFILES) $(POLICY_DIRS)
-	mkdir -p tmp
+	@echo "Building policy.conf ..."
+	@mkdir -p tmp
 	m4 $(M4PARAM) -Imacros -s $(POLICYFILES) > $@.tmp
-	mv $@.tmp $@
+	@mv $@.tmp $@
 
 install-src: 
 	rm -rf $(SRCPATH)/policy.old
 	-mv $(SRCPATH)/policy $(SRCPATH)/policy.old
-	mkdir -p $(SRCPATH)/policy
+	@mkdir -p $(SRCPATH)/policy
 	cp -R . $(SRCPATH)/policy
 
 tmp/program_used_flags.te: $(wildcard domains/program/*.te) domains/program
-	mkdir -p tmp
+	@mkdir -p tmp
 	( cd domains/program/ ; for n in *.te ; do echo "define(\`$$n')"; done ) > $@.tmp
 	( cd domains/misc/ ; for n in *.te ; do echo "define(\`$$n')"; done ) >> $@.tmp
 	mv $@.tmp $@
 
-FILESYSTEMS=`mount | grep -v "context=" | egrep -v '\((|.*,)bind(,.*|)\)' | awk '/(ext[23]| xfs| jfs).*rw/{print $$3}';`
+FILESYSTEMS=`mount | grep -v "context=" | egrep -v '\((|.*,)bind(,.*|)\)' | awk '/(ext[23]| xfs| jfs | reiserfs ).*rw/{print $$3}';`
 
 checklabels: $(SETFILES)
 	$(SETFILES) -v -n $(FC) $(FILESYSTEMS)
@@ -205,20 +201,20 @@ relabel:  $(FC) $(SETFILES)
 	$(SETFILES) $(FC) $(FILESYSTEMS)
 
 file_contexts/misc:
-	mkdir -p file_contexts/misc
-
+	@mkdir -p file_contexts/misc
 
-$(FCPATH): $(FC) $(USERPATH)/system.users 
+$(FCPATH): tmp/valid_fc $(USERPATH)/system.users  $(APPDIR)/customizable_types $(APPDIR)/port_types
+	@echo "Installing file contexts files..."
 	@mkdir -p $(CONTEXTPATH)/files
-	install -m 644 $(FC) $(FCPATH)
 	install -m 644 $(HOMEDIR_TEMPLATE) $(HOMEDIRPATH)
+	install -m 644 $(FC) $(FCPATH)
 	@$(GENHOMEDIRCON) -d $(TOPDIR) -t $(TYPE) $(USEPWD)
 
 $(FC): $(ALL_TUNABLES) tmp/program_used_flags.te $(FCFILES) domains/program domains/misc file_contexts/program file_contexts/misc users /etc/passwd
-	@echo "Building file_contexts ..."
+	@echo "Building file contexts files..."
 	@m4 $(M4PARAM) $(ALL_TUNABLES) tmp/program_used_flags.te $(FCFILES) > $@.tmp
-	@grep -v -e HOME -e ROLE $@.tmp > $@
-	@grep -e HOME -e ROLE $@.tmp  > $(HOMEDIR_TEMPLATE)
+	@grep -v -e HOME -e ROLE -e USER $@.tmp > $@
+	@grep -e HOME -e ROLE -e USER $@.tmp  > $(HOMEDIR_TEMPLATE)
 	@-rm $@.tmp
 
 # Create a tags-file for the policy:
@@ -239,7 +235,7 @@ tags: $(wildcard *.te types/*.te domains/*.te domains/misc/*.te domains/program/
 	  --regex-te='/^[ \t]*bool[ \t]+(\w+)/\1/b,bool/' $^
  
 clean:
-	rm -f policy.conf $(POLICYVER) policy.18
+	rm -f policy.conf $(POLICYVER)
 	rm -f tags
 	rm -f tmp/*
 	rm -f $(FC)
@@ -324,8 +320,11 @@ mlsconvert:
 	done
 	@for file in $(USER_FILES); do \
 		echo "Converting $$file"; \
-		sed -e 's/;/ level s0 range s0 - s9 : c0 . c127;/' $$file > $$file.new && \
+		sed -e 's/;/ level s0 range s0 - s9:c0.c127;/' $$file > $$file.new && \
 		mv $$file.new $$file; \
 	done
-	@sed -e '/sid kernel/s/s0/s0 - s9 : c0 . c127/' initial_sid_contexts > initial_sid_contexts.new && mv initial_sid_contexts.new initial_sid_contexts
+	@sed -e '/sid kernel/s/s0/s0 - s9:c0.c127/' initial_sid_contexts > initial_sid_contexts.new && mv initial_sid_contexts.new initial_sid_contexts
+	@echo "Enabling MLS in the Makefile"
+	@sed "s/MLS=n/MLS=y/" Makefile > Makefile.new
+	@mv Makefile.new Makefile
 	@echo "Done"
diff --git a/strict/VERSION b/strict/VERSION
index aa3e574..24cffb8 100644
--- a/strict/VERSION
+++ b/strict/VERSION
@@ -1 +1 @@
-1.23.2-1
+1.26
diff --git a/strict/attrib.te b/strict/attrib.te
index cc79235..ca9d8e8 100644
--- a/strict/attrib.te
+++ b/strict/attrib.te
@@ -110,6 +110,10 @@ attribute privlog;
 # and an allow rule to permit it
 attribute privmodule;
 
+# The privsysmod attribute identifies every domain that can have the
+# sys_module capability
+attribute privsysmod;
+
 # The privmem attribute identifies every domain that can 
 # access kernel memory devices.
 # This attribute is used in the TE assertions to verify
@@ -117,6 +121,13 @@ attribute privmodule;
 # tagged with this attribute.
 attribute privmem;
 
+# The privkmsg attribute identifies every domain that can 
+# read kernel messages (/proc/kmsg)
+# This attribute is used in the TE assertions to verify
+# that such access is limited to domains that are explicitly
+# tagged with this attribute.
+attribute privkmsg;
+
 # The privfd attribute identifies every domain that should have
 # file handles inherited widely (IE sshd_t and getty_t).
 attribute privfd;
@@ -251,6 +262,12 @@ attribute sysadmfile;
 # overall filesystem statistics.
 attribute fs_type;
 
+# The mount_point attribute identifies all types that can serve
+# as a mount point (for the mount binary). It is used in the mount 
+# policy to grant mounton permission, and in other domains to grant 
+# getattr permission over all the mount points.
+attribute mount_point;
+
 # The exec_type attribute identifies all types assigned
 # to entrypoint executables for domains.  This attribute is 
 # used in TE rules and assertions that should be applied to all 
@@ -413,7 +430,11 @@ attribute nscd_client_domain;
 # For clients of nscd that can use shmem interface.
 attribute nscd_shmem_domain;
 
-# For labeling of content for httpd
+# For labeling of content for httpd.  This attribute is only used by
+# the httpd_unified domain, which says treat all httpdcontent the
+# same.  If you want content to be served in a "non-unified" system
+# you must specifically add "r_dir_file(httpd_t, your_content_t)" to
+# your policy.
 attribute httpdcontent;
 
 # For labeling of domains whos transition can be disabled
diff --git a/strict/constraints b/strict/constraints
index 17fccc0..46a9875 100644
--- a/strict/constraints
+++ b/strict/constraints
@@ -61,6 +61,10 @@ ifdef(`crond.te', `
 ')
 ifdef(`userhelper.te', 
 	`or (t1 == userhelperdomain)')
+ifdef(`postfix.te', `
+ifdef(`direct_sysadm_daemon',
+	`or (t1 == sysadm_mail_t and t2 == system_mail_t and r2 == system_r )')
+')
 	 or (t1 == priv_system_role and r2 == system_r )
         );
 
diff --git a/strict/domains/program/crond.te b/strict/domains/program/crond.te
index d92a422..43d6bbe 100644
--- a/strict/domains/program/crond.te
+++ b/strict/domains/program/crond.te
@@ -86,6 +86,8 @@ allow crond_t rpm_log_t: file create_file_perms;
 
 system_crond_entry(rpm_exec_t, rpm_t)
 allow system_crond_t rpm_log_t:file create_file_perms;
+#read ahead wants to read this
+allow initrc_t system_cron_spool_t:file { getattr read };
 ')
 ')
 
diff --git a/strict/domains/program/dhcpc.te b/strict/domains/program/dhcpc.te
index 3703ce4..442d46f 100644
--- a/strict/domains/program/dhcpc.te
+++ b/strict/domains/program/dhcpc.te
@@ -64,6 +64,9 @@ allow ping_t hotplug_t:fd use;
 ifdef(`cardmgr.te', `
 allow ping_t cardmgr_t:fd use;
 ') dnl end if cardmgr
+', `
+allow dhcpc_t self:capability setuid;
+allow dhcpc_t self:rawip_socket create_socket_perms;
 ') dnl end if ping
 
 ifdef(`dhcpd.te', `', `
@@ -116,7 +119,7 @@ allow dhcpc_t self:packet_socket create_socket_perms;
 allow dhcpc_t var_lib_t:dir search;
 file_type_auto_trans(dhcpc_t, dhcp_state_t, dhcpc_state_t, file)
 
-allow dhcpc_t bin_t:dir search;
+allow dhcpc_t bin_t:dir { getattr search };
 allow dhcpc_t bin_t:lnk_file read;
 can_exec(dhcpc_t, { bin_t shell_exec_t })
 
diff --git a/strict/domains/program/hotplug.te b/strict/domains/program/hotplug.te
index 65f5396..38e1d52 100644
--- a/strict/domains/program/hotplug.te
+++ b/strict/domains/program/hotplug.te
@@ -65,7 +65,7 @@ allow hotplug_t usbfs_t:file { getattr read };
 allow hotplug_t etc_t:dir r_dir_perms;
 allow hotplug_t etc_t:{ file lnk_file } r_file_perms;
 
-allow hotplug_t kernel_t:process sigchld;
+allow hotplug_t kernel_t:process { sigchld setpgid };
 
 ifdef(`distro_redhat', `
 allow hotplug_t var_lock_t:dir search;
@@ -128,9 +128,9 @@ dontaudit hotplug_t initctl_t:fifo_file { read write };
 # Read /usr/lib/gconv/.*
 allow hotplug_t lib_t:file { getattr read };
 
-allow hotplug_t self:capability { net_admin sys_tty_config mknod };
-allow hotplug_t sysfs_t:dir { getattr read search };
-allow hotplug_t sysfs_t:file { getattr read };
+allow hotplug_t self:capability { net_admin sys_tty_config mknod sys_rawio };
+allow hotplug_t sysfs_t:dir { getattr read search write };
+allow hotplug_t sysfs_t:file rw_file_perms;
 allow hotplug_t sysfs_t:lnk_file { getattr read };
 allow hotplug_t udev_runtime_t:file rw_file_perms;
 ifdef(`lpd.te', `
@@ -156,10 +156,7 @@ ifdef(`mta.te', `
 domain_auto_trans(hotplug_t, sendmail_exec_t, system_mail_t) 
 ')
 
-allow restorecon_t hotplug_t:fd use;
+allow { insmod_t kernel_t } hotplug_etc_t:dir { search getattr };
+allow hotplug_t self:netlink_route_socket r_netlink_socket_perms;
 
-ifdef(`unlimitedUtils', `
-unconfined_domain(hotplug_t) 
-')
-
-allow kernel_t hotplug_etc_t:dir search;
+dontaudit hotplug_t selinux_config_t:dir search;
diff --git a/strict/domains/program/ipsec.te b/strict/domains/program/ipsec.te
index dd32f69..3bb4bad 100644
--- a/strict/domains/program/ipsec.te
+++ b/strict/domains/program/ipsec.te
@@ -185,9 +185,8 @@ allow ipsec_t etc_t:file { read getattr };
 allow ipsec_mgmt_t null_device_t:chr_file rw_file_perms;
 allow ipsec_t null_device_t:chr_file rw_file_perms;
 
-# Allow scripts to use /var/locl/subsys/ipsec
-allow ipsec_mgmt_t var_lock_t:dir rw_dir_perms;
-allow ipsec_mgmt_t var_lock_t:file create_file_perms;
+# Allow scripts to use /var/lock/subsys/ipsec
+lock_domain(ipsec_mgmt)
 
 # allow tncfg to create sockets
 allow ipsec_mgmt_t self:udp_socket { create ioctl };
diff --git a/strict/domains/program/klogd.te b/strict/domains/program/klogd.te
index 42a136e..dd0b79c 100644
--- a/strict/domains/program/klogd.te
+++ b/strict/domains/program/klogd.te
@@ -43,3 +43,6 @@ allow klogd_t kernel_t:system { syslog_mod syslog_console };
 # Read /boot/System.map*
 allow klogd_t system_map_t:file r_file_perms;
 allow klogd_t boot_t:dir r_dir_perms;
+ifdef(`targeted_policy', `
+allow klogd_t unconfined_t:system syslog_mod;
+')
diff --git a/strict/domains/program/load_policy.te b/strict/domains/program/load_policy.te
index 8276f58..e10a6e2 100644
--- a/strict/domains/program/load_policy.te
+++ b/strict/domains/program/load_policy.te
@@ -11,6 +11,7 @@
 
 type load_policy_t, domain;
 role sysadm_r types load_policy_t;
+role secadm_r types load_policy_t;
 role system_r types load_policy_t;
 
 type load_policy_exec_t, file_type, exec_type, sysadmfile;
@@ -19,7 +20,7 @@ type load_policy_exec_t, file_type, exec_type, sysadmfile;
 # 
 # Rules
 
-domain_auto_trans(sysadm_t, load_policy_exec_t, load_policy_t)
+domain_auto_trans(secadmin, load_policy_exec_t, load_policy_t)
 
 allow load_policy_t console_device_t:chr_file { read write };
 
diff --git a/strict/domains/program/login.te b/strict/domains/program/login.te
index 540b68f..887aa58 100644
--- a/strict/domains/program/login.te
+++ b/strict/domains/program/login.te
@@ -13,7 +13,7 @@
 
 # $1 is the name of the domain (local or remote)
 define(`login_domain', `
-type $1_login_t, domain, privuser, privrole, privlog, auth_chkpwd, privowner, privfd, nscd_client_domain;
+type $1_login_t, domain, privuser, privrole, privlog, auth_chkpwd, privowner, privfd, nscd_client_domain, mlsfilewrite, mlsprocsetsl, mlsfileupgrade, mlsfiledowngrade;
 role system_r types $1_login_t;
 
 dontaudit $1_login_t shadow_t:file { getattr read };
@@ -83,6 +83,9 @@ if (use_samba_home_dirs) {
 r_dir_file($1_login_t, cifs_t)
 }
 
+# Login can polyinstantiate
+polyinstantiater($1_login_t)
+
 # FIXME: what is this for?
 ifdef(`xdm.te', `
 allow xdm_t $1_login_t:process signull;
@@ -166,9 +169,7 @@ dontaudit local_login_t mnt_t:dir r_dir_perms;
 
 
 # Create lock file.
-allow local_login_t var_lock_t:dir rw_dir_perms;
-allow local_login_t var_lock_t:file create_file_perms;
-
+lock_domain(local_login)
 
 # Read and write ttys.
 allow local_login_t tty_device_t:chr_file { setattr rw_file_perms };
diff --git a/strict/domains/program/logrotate.te b/strict/domains/program/logrotate.te
index 9cdcf6f..33c1d51 100644
--- a/strict/domains/program/logrotate.te
+++ b/strict/domains/program/logrotate.te
@@ -46,7 +46,7 @@ allow logrotate_t etc_runtime_t:file r_file_perms;
 allow logrotate_t {staff_home_dir_t sysadm_home_dir_t}:dir { getattr read search };
 
 # create lock files
-rw_dir_create_file(logrotate_t, var_lock_t)
+lock_domain(logrotate)
 
 # Create temporary files.
 tmp_domain(logrotate)
diff --git a/strict/domains/program/modutil.te b/strict/domains/program/modutil.te
index ca8d7c1..64028d6 100644
--- a/strict/domains/program/modutil.te
+++ b/strict/domains/program/modutil.te
@@ -71,7 +71,7 @@ r_dir_file(depmod_t, { staff_home_t sysadm_home_t })
 # Rules for the insmod_t domain.
 #
 
-type insmod_t, domain, privlog, sysctl_kernel_writer, privmem ifdef(`unlimitedUtils', `, admin, etc_writer, fs_domain, auth_write, privowner, privmodule' )
+type insmod_t, domain, privlog, sysctl_kernel_writer, privmem, privsysmod ifdef(`unlimitedUtils', `, admin, etc_writer, fs_domain, auth_write, privowner, privmodule' ), mlsfilewrite, nscd_client_domain
 ;
 role system_r types insmod_t;
 role sysadm_r types insmod_t;
diff --git a/strict/domains/program/mount.te b/strict/domains/program/mount.te
index 8f1b7c1..9efd6a4 100644
--- a/strict/domains/program/mount.te
+++ b/strict/domains/program/mount.te
@@ -11,7 +11,7 @@
 
 type mount_exec_t, file_type, sysadmfile, exec_type;
 
-mount_domain(sysadm, mount, `, fs_domain, nscd_client_domain')
+mount_domain(sysadm, mount, `, fs_domain, nscd_client_domain, mlsfileread, mlsfilewrite')
 mount_loopback_privs(sysadm, mount)
 role sysadm_r types mount_t;
 role system_r types mount_t;
@@ -39,20 +39,16 @@ allow mount_t file_t:file { getattr read unlink };
 allow mount_t fs_type:filesystem mount_fs_perms;
 allow mount_t mount_point:dir mounton;
 allow mount_t nfs_t:dir search;
-# nfsv4 has a filesystem to mount for its userspace daemons
-allow mount_t var_lib_nfs_t:dir mounton;
-
-# On some RedHat systems, /boot is a mount point
-allow mount_t boot_t:dir mounton;
-allow mount_t device_t:dir mounton;
-# mount binfmt_misc on /proc/sys/fs/binfmt_misc
-allow mount_t sysctl_t:dir { mounton search };
+allow mount_t sysctl_t:dir search;
 
 allow mount_t root_t:filesystem unmount;
 
+can_portmap(mount_t)
+
 ifdef(`portmap.te', `
 # for nfs
 can_network(mount_t)
+allow mount_t port_type:tcp_socket name_connect;
 can_ypbind(mount_t)
 allow mount_t port_t:{ tcp_socket udp_socket } name_bind;
 allow mount_t reserved_port_t:{ tcp_socket udp_socket } name_bind;
@@ -83,11 +79,7 @@ dontaudit mount_t kernel_t:fd use;
 allow mount_t userdomain:fd use;
 can_exec(mount_t, { sbin_t bin_t })
 allow mount_t device_t:dir r_dir_perms;
-ifdef(`distro_redhat', `
 allow mount_t tmpfs_t:chr_file { read write };
-allow mount_t tmpfs_t:dir mounton;
-')
-
 
 # tries to read /init
 dontaudit mount_t root_t:file { getattr read };
diff --git a/strict/domains/program/mta.te b/strict/domains/program/mta.te
index 096c734..6c141c4 100644
--- a/strict/domains/program/mta.te
+++ b/strict/domains/program/mta.te
@@ -13,8 +13,6 @@
 ifdef(`sendmail.te', `', `
 type sendmail_exec_t, file_type, exec_type, sysadmfile;
 ')
-type smtp_port_t, port_type, reserved_port_type;
-
 
 # create a system_mail_t domain for daemons, init scripts, etc when they run
 # "mail user@domain"
@@ -25,6 +23,7 @@ ifdef(`targeted_policy', `
 # targeted policy.  We could move these rules permanantly here.
 ifdef(`postfix.te', `', `can_exec_any(system_mail_t)')
 allow system_mail_t self:dir { search };
+allow system_mail_t self:lnk_file read;
 r_dir_file(system_mail_t, { proc_t proc_net_t })
 allow system_mail_t fs_t:filesystem getattr;
 allow system_mail_t { var_t var_spool_t }:dir getattr;
@@ -59,15 +58,6 @@ allow { system_mail_t mta_user_agent } privmail:process sigchld;
 allow { system_mail_t mta_user_agent } privmail:fifo_file { read write };
 allow { system_mail_t mta_user_agent } admin_tty_type:chr_file { read write };
 
-ifdef(`arpwatch.te', `
-# why is mail delivered to a directory of type arpwatch_data_t?
-allow mta_delivery_agent arpwatch_data_t:dir search;
-allow { system_mail_t mta_user_agent } arpwatch_tmp_t:file rw_file_perms;
-ifdef(`hide_broken_symptoms', `
-dontaudit { system_mail_t mta_user_agent } arpwatch_t:packet_socket { read write };
-')
-')dnl end if arpwatch.te
-
 allow mta_delivery_agent home_root_t:dir { getattr search };
 
 # for /var/spool/mail
@@ -81,4 +71,4 @@ allow mta_delivery_agent devtty_t:chr_file rw_file_perms;
 allow mta_delivery_agent { etc_runtime_t proc_t }:file { getattr read };
 
 allow system_mail_t etc_runtime_t:file { getattr read };
-allow system_mail_t urandom_device_t:chr_file read;
+allow system_mail_t { random_device_t urandom_device_t }:chr_file { getattr read };
diff --git a/strict/domains/program/mysqld.te b/strict/domains/program/mysqld.te
index 84934de..1bd9073 100644
--- a/strict/domains/program/mysqld.te
+++ b/strict/domains/program/mysqld.te
@@ -10,15 +10,13 @@
 #
 # mysqld_exec_t is the type of the mysqld executable.
 #
-daemon_domain(mysqld)
+daemon_domain(mysqld, `, nscd_client_domain')
 
-type mysqld_port_t, port_type;
 allow mysqld_t mysqld_port_t:tcp_socket name_bind;
 
 allow mysqld_t mysqld_var_run_t:sock_file create_file_perms;
 
 etcdir_domain(mysqld)
-typealias mysqld_etc_t alias etc_mysqld_t;
 type mysqld_db_t, file_type, sysadmfile;
 
 log_domain(mysqld)
@@ -36,7 +34,7 @@ allow initrc_t mysqld_var_run_t:sock_file write;
 allow initrc_t mysqld_log_t:file { write append setattr ioctl };
 
 allow mysqld_t self:capability { dac_override setgid setuid net_bind_service };
-allow mysqld_t self:process getsched;
+allow mysqld_t self:process { setsched getsched };
 
 allow mysqld_t proc_t:file { getattr read };
 
@@ -90,3 +88,4 @@ allow userdomain mysqld_var_run_t:sock_file write;
 }
 ')
 
+allow mysqld_t self:netlink_route_socket r_netlink_socket_perms;
diff --git a/strict/domains/program/named.te b/strict/domains/program/named.te
index 028667e..39924d7 100644
--- a/strict/domains/program/named.te
+++ b/strict/domains/program/named.te
@@ -10,11 +10,13 @@
 #
 # Rules for the named_t domain.
 #
-type rndc_port_t, port_type, reserved_port_type;
 
 daemon_domain(named, `, nscd_client_domain')
 tmp_domain(named)
 
+type named_checkconf_exec_t, file_type, exec_type, sysadmfile;
+domain_auto_trans(initrc_t, named_checkconf_exec_t, named_t)
+
 # For /var/run/ndc used in BIND 8
 file_type_auto_trans(named_t, var_run_t, named_var_run_t, sock_file)
 
@@ -54,11 +56,13 @@ allow named_t etc_runtime_t:{ file lnk_file } { getattr read };
 
 #Named can use network
 can_network(named_t)
+allow named_t port_type:tcp_socket name_connect;
 can_ypbind(named_t)
 # allow UDP transfer to/from any program
 can_udp_send(domain, named_t)
 can_udp_send(named_t, domain)
 can_tcp_connect(domain, named_t)
+log_domain(named)
 
 # Bind to the named port.
 allow named_t dns_port_t:udp_socket name_bind;
@@ -103,6 +107,7 @@ type ndc_exec_t, file_type,sysadmfile, exec_type;
 domain_auto_trans({ sysadm_t initrc_t }, ndc_exec_t, ndc_t)
 uses_shlib(ndc_t)
 can_network_client_tcp(ndc_t)
+allow ndc_t rndc_port_t:tcp_socket name_connect;
 can_ypbind(ndc_t)
 can_resolve(ndc_t)
 read_locale(ndc_t)
@@ -113,6 +118,7 @@ ifdef(`distro_redhat', `
 allow { ndc_t initrc_t } named_conf_t:dir search;
 # Allow init script to cp localtime to named_conf_t
 allow initrc_t named_conf_t:file { setattr write };
+allow initrc_t named_conf_t:dir create_dir_perms;
 ')
 allow { ndc_t initrc_t } named_conf_t:file { getattr read };
 
diff --git a/strict/domains/program/newrole.te b/strict/domains/program/newrole.te
index 6f6489e..8d66e4b 100644
--- a/strict/domains/program/newrole.te
+++ b/strict/domains/program/newrole.te
@@ -17,3 +17,4 @@ newrole_domain(newrole)
 allow newrole_t var_run_t:dir r_dir_perms;
 allow newrole_t initrc_var_run_t:file rw_file_perms;
 
+role secadm_r types newrole_t;
diff --git a/strict/domains/program/nscd.te b/strict/domains/program/nscd.te
index 40ffbbc..77e2eb7 100644
--- a/strict/domains/program/nscd.te
+++ b/strict/domains/program/nscd.te
@@ -73,3 +73,6 @@ allow nscd_t self:netlink_route_socket r_netlink_socket_perms;
 allow nscd_t tmp_t:dir { search getattr };
 allow nscd_t tmp_t:lnk_file read;
 allow nscd_t { urandom_device_t random_device_t }:chr_file { getattr read };
+log_domain(nscd)
+r_dir_file(nscd_t, cert_t)
+allow nscd_t tun_tap_device_t:chr_file { read write };
diff --git a/strict/domains/program/ntpd.te b/strict/domains/program/ntpd.te
index 2b7480c..80ea965 100644
--- a/strict/domains/program/ntpd.te
+++ b/strict/domains/program/ntpd.te
@@ -43,6 +43,7 @@ can_network(ntpd_t)
 allow ntpd_t ntp_port_t:tcp_socket name_connect;
 can_ypbind(ntpd_t)
 allow ntpd_t ntp_port_t:udp_socket name_bind;
+allow sysadm_t ntp_port_t:udp_socket name_bind;
 allow ntpd_t self:unix_dgram_socket create_socket_perms;
 allow ntpd_t self:unix_stream_socket create_socket_perms;
 allow ntpd_t self:netlink_route_socket r_netlink_socket_perms;
diff --git a/strict/domains/program/pam.te b/strict/domains/program/pam.te
index 7c5710f..2d71222 100644
--- a/strict/domains/program/pam.te
+++ b/strict/domains/program/pam.te
@@ -37,4 +37,9 @@ dontaudit pam_t self:capability sys_tty_config;
 
 allow initrc_t pam_var_run_t:dir rw_dir_perms;
 allow initrc_t pam_var_run_t:file { getattr read unlink };
-dontaudit pam_t initrc_var_run_t:file { read write };
+dontaudit pam_t initrc_var_run_t:file rw_file_perms;
+
+# Supress xdm denial
+ifdef(`xdm.te', `
+dontaudit pam_t xdm_t:fd use;
+') dnl ifdef
diff --git a/strict/domains/program/ping.te b/strict/domains/program/ping.te
index c23d92b..cc1407e 100644
--- a/strict/domains/program/ping.te
+++ b/strict/domains/program/ping.te
@@ -17,6 +17,7 @@ role system_r types ping_t;
 in_user_role(ping_t)
 type ping_exec_t, file_type, sysadmfile, exec_type;
 
+ifdef(`targeted_policy', `', `
 bool user_ping false;
 
 if (user_ping) {
@@ -25,6 +26,7 @@ if (user_ping) {
 	allow ping_t { ttyfile ptyfile }:chr_file rw_file_perms;
 	ifdef(`gnome-pty-helper.te', `allow ping_t gphdomain:fd use;')
 }
+')
 
 # Transition into this domain when you run this program.
 domain_auto_trans(sysadm_t, ping_exec_t, ping_t)
@@ -32,6 +34,7 @@ domain_auto_trans(initrc_t, ping_exec_t, ping_t)
 
 uses_shlib(ping_t)
 can_network_client(ping_t)
+can_resolve(ping_t)
 can_ypbind(ping_t)
 allow ping_t etc_t:file { getattr read };
 allow ping_t self:unix_stream_socket create_socket_perms;
diff --git a/strict/domains/program/udev.te b/strict/domains/program/udev.te
index fb70a35..ae4760c 100644
--- a/strict/domains/program/udev.te
+++ b/strict/domains/program/udev.te
@@ -28,18 +28,19 @@ can_exec_any(udev_t)
 type udev_tdb_t, file_type, sysadmfile, dev_fs;
 typealias udev_tdb_t alias udev_tbl_t;
 file_type_auto_trans(udev_t, device_t, udev_tdb_t, file)
-allow udev_t self:capability { chown dac_override dac_read_search fowner fsetid sys_admin mknod net_raw net_admin };
+allow udev_t self:capability { chown dac_override dac_read_search fowner fsetid sys_admin sys_nice mknod net_raw net_admin sys_rawio };
 allow udev_t self:file { getattr read };
 allow udev_t self:unix_stream_socket {connectto create_stream_socket_perms};
 allow udev_t self:unix_dgram_socket create_socket_perms;
 allow udev_t self:fifo_file rw_file_perms;
 allow udev_t self:netlink_kobject_uevent_socket { create bind read }; 
+allow udev_t device_t:file { unlink rw_file_perms };
 allow udev_t device_t:sock_file create_file_perms;
 allow udev_t device_t:lnk_file create_lnk_perms;
 allow udev_t { device_t device_type }:{ chr_file blk_file } { relabelfrom relabelto create_file_perms };
 ifdef(`distro_redhat', `
-allow udev_t tmpfs_t:dir rw_dir_perms;
-allow udev_t tmpfs_t:sock_file create_file_perms;
+allow udev_t tmpfs_t:dir create_dir_perms;
+allow udev_t tmpfs_t:{ sock_file file } create_file_perms;
 allow udev_t tmpfs_t:lnk_file create_lnk_perms;
 allow udev_t tmpfs_t:{ chr_file blk_file } { relabelfrom relabelto create_file_perms };
 allow udev_t tmpfs_t:dir search;
@@ -53,7 +54,7 @@ allow udev_t { sbin_t bin_t }:lnk_file read;
 allow udev_t bin_t:lnk_file read;
 can_exec(udev_t, { shell_exec_t bin_t sbin_t etc_t } )
 can_exec(udev_t, udev_exec_t)
-r_dir_file(udev_t, sysfs_t)
+rw_dir_file(udev_t, sysfs_t)
 allow udev_t sysadm_tty_device_t:chr_file { read write };
 
 # to read the file_contexts file
@@ -138,3 +139,8 @@ file_type_auto_trans(udev_t, etc_t, dhcp_etc_t, file)
 ')
 r_dir_file(udev_t, domain)
 allow udev_t modules_dep_t:file r_file_perms;
+
+ifdef(`unlimitedUtils', `
+unconfined_domain(udev_t) 
+')
+dontaudit hostname_t udev_t:fd use;
diff --git a/strict/domains/user.te b/strict/domains/user.te
index 02f6be9..39a76d6 100644
--- a/strict/domains/user.te
+++ b/strict/domains/user.te
@@ -10,10 +10,15 @@ bool user_dmesg false;
 # Support NFS home directories
 bool use_nfs_home_dirs false;
 
-# Allow execution of anonymous mappings, e.g. executable stack.
+# Allow making anonymous memory executable, e.g. 
+# for runtime-code generation or executable stack.
 bool allow_execmem false;
 
-# Support Share libraries with Text Relocation
+# Allow making the stack executable via mprotect.
+# Also requires allow_execmem.
+bool allow_execstack false;
+
+# Allow making a modified private file mapping executable (text relocation).
 bool allow_execmod false;
 
 # Support SAMBA home directories
@@ -126,7 +131,16 @@ dontaudit unpriv_userdomain { sysadm_home_dir_t staff_home_dir_t }:dir { getattr
 role_tty_type_change(sysadm, user)
 role_tty_type_change(staff, sysadm)
 role_tty_type_change(sysadm, staff)
+role_tty_type_change(sysadm, secadm)
+role_tty_type_change(staff, secadm)
 
 # "ps aux" and "ls -l /dev/pts" make too much noise without this
 dontaudit unpriv_userdomain ptyfile:chr_file getattr;
 
+# to allow w to display everyone...
+bool user_ttyfile_stat false;
+
+if (user_ttyfile_stat) {
+allow userdomain ttyfile:chr_file getattr;
+}
+
diff --git a/strict/fs_use b/strict/fs_use
index 8f167a7..1dec535 100644
--- a/strict/fs_use
+++ b/strict/fs_use
@@ -8,6 +8,7 @@ fs_use_xattr ext2 system_u:object_r:fs_t;
 fs_use_xattr ext3 system_u:object_r:fs_t;
 fs_use_xattr xfs system_u:object_r:fs_t;
 fs_use_xattr jfs system_u:object_r:fs_t;
+fs_use_xattr reiserfs system_u:object_r:fs_t;
 
 # Use the allocating task SID to label inodes in the following filesystem
 # types, and label the filesystem itself with the specified context.
@@ -25,6 +26,7 @@ fs_use_task sockfs system_u:object_r:fs_t;
 fs_use_trans devpts system_u:object_r:devpts_t;
 fs_use_trans tmpfs system_u:object_r:tmpfs_t;
 fs_use_trans shm system_u:object_r:tmpfs_t;
+fs_use_trans mqueue system_u:object_r:tmpfs_t;
 
 # The separate genfs_contexts configuration can be used for filesystem 
 # types that cannot support persistent label mappings or use
diff --git a/strict/genfs_contexts b/strict/genfs_contexts
index 3c2438b..6686d2e 100644
--- a/strict/genfs_contexts
+++ b/strict/genfs_contexts
@@ -91,8 +91,10 @@ genfscon nfs /				system_u:object_r:nfs_t
 genfscon nfs4 /				system_u:object_r:nfs_t
 genfscon afs /				system_u:object_r:nfs_t
 
-# reiserfs - until xattr security support works properly
-genfscon reiserfs /			system_u:object_r:nfs_t
+genfscon debugfs /			system_u:object_r:debugfs_t
+genfscon inotifyfs /			system_u:object_r:inotifyfs_t
+genfscon hugetlbfs /			system_u:object_r:hugetlbfs_t
+genfscon mqueue /			system_u:object_r:mqueue_t
 
 # needs more work
 genfscon eventpollfs / system_u:object_r:eventpollfs_t
diff --git a/strict/macros/base_user_macros.te b/strict/macros/base_user_macros.te
index 06bd8b3..6281fca 100644
--- a/strict/macros/base_user_macros.te
+++ b/strict/macros/base_user_macros.te
@@ -35,7 +35,8 @@ r_dir_file($1_t, usercanread)
 general_domain_access($1_t)
 
 if (allow_execmem) {
-# Allow loading DSOs that require executable stack.
+# Allow making anonymous memory executable, e.g. 
+# for runtime-code generation or executable stack.
 allow $1_t self:process execmem;
 }
 
@@ -131,10 +132,6 @@ ifdef(`cardmgr.te', `
 allow $1_t cardmgr_var_run_t:file { getattr read };
 ')
 
-# Read and write /var/catman.
-allow $1_t catman_t:dir rw_dir_perms;
-allow $1_t catman_t:file create_file_perms;
-
 # Modify mail spool file.
 allow $1_t mail_spool_t:dir r_dir_perms;
 allow $1_t mail_spool_t:file rw_file_perms;
@@ -176,19 +173,38 @@ ifdef(`crontab.te', `crontab_domain($1)')
 ifdef(`screen.te', `screen_domain($1)')
 ifdef(`tvtime.te', `tvtime_domain($1)')
 ifdef(`mozilla.te', `mozilla_domain($1)')
+ifdef(`thunderbird.te', `thunderbird_domain($1)')
 ifdef(`samba.te', `samba_domain($1)')
-ifdef(`games.te', `games_domain($1)')
 ifdef(`gpg.te', `gpg_domain($1)')
 ifdef(`xauth.te', `xauth_domain($1)')
+ifdef(`iceauth.te', `iceauth_domain($1)')
 ifdef(`startx.te', `xserver_domain($1)')
 ifdef(`lpr.te', `lpr_domain($1)')
 ifdef(`ssh.te', `ssh_domain($1)')
 ifdef(`irc.te', `irc_domain($1)')
 ifdef(`using_spamassassin', `spamassassin_domain($1)')
+ifdef(`pyzor.te', `pyzor_domain($1)')
+ifdef(`razor.te', `razor_domain($1)')
 ifdef(`uml.te', `uml_domain($1)')
 ifdef(`cdrecord.te', `cdrecord_domain($1)')
 ifdef(`mplayer.te', `mplayer_domains($1)')
+
+fontconfig_domain($1)
+
+# GNOME
+ifdef(`gnome.te', `
+gnome_domain($1)
+ifdef(`games.te', `games_domain($1)')
 ifdef(`gift.te', `gift_domains($1)')
+ifdef(`evolution.te', `evolution_domains($1)')
+ifdef(`ethereal.te', `ethereal_domain($1)')
+')
+
+# ICE communication channel
+ice_domain($1, $1)
+
+# ORBit communication channel (independent of GNOME)
+orbit_domain($1, $1)
 
 # Instantiate a derived domain for user cron jobs.
 ifdef(`crond.te', `crond_domain($1)')
@@ -213,7 +229,9 @@ dontaudit $1_t self:netlink_route_socket create_netlink_socket_perms;
 
 # Use the network.
 can_network($1_t)
+allow $1_t port_type:tcp_socket name_connect;
 can_ypbind($1_t)
+can_winbind($1_t)
 
 ifdef(`pamconsole.te', `
 allow $1_t pam_var_console_t:dir search;
@@ -321,13 +339,12 @@ allow $1_t mnt_t:dir { getattr search };
 
 # Get attributes of file systems.
 allow $1_t fs_type:filesystem getattr;
-allow $1_t removable_t:filesystem getattr;
 
 # Read and write /dev/tty and /dev/null.
 allow $1_t devtty_t:chr_file rw_file_perms;
 allow $1_t null_device_t:chr_file rw_file_perms;
 allow $1_t zero_device_t:chr_file { rw_file_perms execute };
-allow $1_t { random_device_t urandom_device_t }:chr_file { getattr read ioctl };
+allow $1_t { random_device_t urandom_device_t }:chr_file ra_file_perms;
 #
 # Added to allow reading of cdrom
 #
@@ -347,8 +364,11 @@ dontaudit $1_t wtmp_t:file write;
 # Read the devpts root directory.
 allow $1_t devpts_t:dir r_dir_perms;
 
-allow $1_t src_t:dir r_dir_perms;
-allow $1_t src_t:notdevfile_class_set r_file_perms;
+r_dir_file($1_t, src_t)
+
+# Allow user to read default_t files
+# This is different from reading default_t content, 
+# because it also includes sockets, fifos, and links
 
 if (read_default_t) {
 allow $1_t default_t:dir r_dir_perms;
@@ -368,8 +388,6 @@ dontaudit $1_t initrc_devpts_t:chr_file { ioctl read write };
 dontaudit $1_t self:socket create;
 dontaudit $1_t sysctl_net_t:dir search;
 
-dontaudit $1_t default_context_t:dir search;
-
 ifdef(`rpcd.te', `
 create_dir_file($1_t, nfsd_rw_t)
 ')
diff --git a/strict/macros/core_macros.te b/strict/macros/core_macros.te
index 37f2975..b744fe5 100644
--- a/strict/macros/core_macros.te
+++ b/strict/macros/core_macros.te
@@ -662,9 +662,9 @@ allow $1_t $2_devpts_t:chr_file { setattr rw_file_perms };
 #
 define(`general_domain_access',`
 # Access other processes in the same domain.
-# Omits ptrace, setcurrent, setexec, setfscreate, setrlimit, and execmem.  
+# Omits ptrace, setcurrent, setexec, setfscreate, setrlimit, execmem, execstack and execheap.
 # These must be granted separately if desired.
-allow $1 self:process ~{ptrace setcurrent setexec setfscreate setrlimit execmem};
+allow $1 self:process ~{ptrace setcurrent setexec setfscreate setrlimit execmem execstack execheap};
 
 # Access /proc/PID files for processes in the same domain.
 allow $1 self:dir r_dir_perms;
diff --git a/strict/macros/global_macros.te b/strict/macros/global_macros.te
index cfb47cd..b4cccc4 100644
--- a/strict/macros/global_macros.te
+++ b/strict/macros/global_macros.te
@@ -60,7 +60,7 @@ allow $1 self:file { getattr read write };
 # read_sysctl(domain)
 #
 # Permissions for reading sysctl variables.
-# If the second parameter is 'full', allow
+# If the second parameter is full, allow
 # reading of any sysctl variables, else only
 # sysctl_kernel_t.
 #
@@ -106,6 +106,7 @@ allow $1 ld_so_t:file rx_file_perms;
 allow $1 ld_so_t:lnk_file r_file_perms;
 allow $1 { texrel_shlib_t shlib_t }:file rx_file_perms;
 allow $1 { texrel_shlib_t shlib_t }:lnk_file r_file_perms;
+allow $1 texrel_shlib_t:file execmod;
 allow $1 ld_so_cache_t:file r_file_perms;
 allow $1 device_t:dir search;
 allow $1 null_device_t:chr_file rw_file_perms;
@@ -156,7 +157,6 @@ allow $1 lib_t:file r_file_perms;
 r_dir_file($1, locale_t)
 ')
 
-
 ###################################
 #
 # access_terminal(domain, typeprefix)
@@ -253,7 +253,7 @@ allow $1_t self:process { signal_perms fork };
 uses_shlib($1_t)
 
 allow $1_t { self proc_t }:dir r_dir_perms;
-allow $1_t { self proc_t }:lnk_file read;
+allow $1_t { self proc_t }:lnk_file { getattr read };
 
 allow $1_t device_t:dir r_dir_perms;
 ifdef(`udev.te', `
@@ -293,6 +293,8 @@ domain_auto_trans(init_t, $1_exec_t, $1_t)
 # Define a daemon domain with a base set of type declarations
 # and permissions that are common to most daemons.
 # attribs is the list of attributes which must start with "," if it is not empty
+# nosysadm may be given as an optional third parameter, to specify that the
+# sysadmin should not transition to the domain when directly calling the executable
 #
 # Author:  Russell Coker <russell@coker.com.au>
 #
@@ -353,6 +355,14 @@ file_type_auto_trans($1_t, var_run_t, $1_var_run_t, $2)
 allow $1_t var_t:dir search;
 allow $1_t $1_var_run_t:dir rw_dir_perms;
 ')
+
+#######################
+# daemon_domain(domain_prefix, attribs)
+#
+# see daemon_base_domain for calling details
+# daemon_domain defines some additional privileges needed by many domains,
+# like pid files and locale support
+
 define(`daemon_domain', `
 ifdef(`targeted_policy', `
 daemon_base_domain($1, `$2, transitionbool', $3)
@@ -396,8 +406,19 @@ type $2_exec_t, file_type, sysadmfile, exec_type;
 
 role system_r types $2_t;
 
+ifelse(index(`$3',`transitionbool'), -1, `
+
 domain_auto_trans($1, $2_exec_t, $2_t)
 
+', `
+
+bool $2_disable_trans false;
+
+if (! $2_disable_trans) {
+domain_auto_trans($1, $2_exec_t, $2_t)
+}
+
+');
 # Inherit and use descriptors from parent.
 allow $2_t $1:fd use;
 allow $2_t $1:process sigchld;
@@ -422,16 +443,23 @@ ifelse($3, `',
 `file_type_auto_trans($1_t, tmp_t, $1_tmp_t, `$3')')
 ')
 
+# grant access to /tmp. Do not perform an automatic transition.
+define(`tmp_domain_notrans', `
+type $1_tmp_t, file_type, sysadmfile, polymember, tmpfile $2;
+')
+
 define(`tmpfs_domain', `
+ifdef(`$1_tmpfs_t_defined',`', `
+define(`$1_tmpfs_t_defined')
 type $1_tmpfs_t, file_type, sysadmfile, tmpfsfile;
 # Use this type when creating tmpfs/shm objects.
 file_type_auto_trans($1_t, tmpfs_t, $1_tmpfs_t)
 allow $1_tmpfs_t tmpfs_t:filesystem associate;
 ')
+')
 
 define(`var_lib_domain', `
 type $1_var_lib_t, file_type, sysadmfile;
-typealias $1_var_lib_t alias var_lib_$1_t;
 file_type_auto_trans($1_t, var_lib_t, $1_var_lib_t, file)
 allow $1_t $1_var_lib_t:dir rw_dir_perms;
 ')
@@ -474,105 +502,6 @@ type $1_lock_t, file_type, sysadmfile, lockfile;
 file_type_auto_trans($1_t, var_lock_t, $1_lock_t, file)
 ')
 
-####################################################################
-# home_domain_ro_access(source, user, app) 
-# 
-# Gives source access to the read-only home
-# domain of app for the given user type
-#
-
-define(`home_domain_ro_access', `
-
-allow $1 home_root_t:dir search;
-
-if (use_nfs_home_dirs) {
-r_dir_file($1, nfs_t)
-}
-if (use_samba_home_dirs) {
-r_dir_file($1, cifs_t)
-}
-allow $1 autofs_t:dir { search getattr };
-
-r_dir_file($1, $2_$3_ro_home_t)
-
-') dnl home_domain_ro_access
-
-####################################################################
-# home_domain_access(source, user, app)
-#
-# Gives source full access to the home
-# domain of app for the given user type
-#
-
-define(`home_domain_access', `
-
-allow $1 home_root_t:dir search;
-
-if (use_nfs_home_dirs) {
-create_dir_file($1, nfs_t)
-}
-if (use_samba_home_dirs) {
-create_dir_file($1, cifs_t)
-}
-allow $1 autofs_t:dir { search getattr };
-
-file_type_auto_trans($1, $2_home_dir_t, $2_$3_home_t)
-
-') dnl home_domain_access
-
-####################################################################
-# home_domain (prefix, app)
-#
-# Creates a domain in the prefix home where an application can
-# store its settings. It's accessible by the prefix domain.
-#
-
-define(`home_domain', `
-
-# Declare home domain
-# FIXME: the second alias is problematic because
-# home_domain and home_domain_ro cannot be used in parallel
-# Remove the second alias when compatibility is no longer an issue
-
-type $1_$2_home_t, file_type, $1_file_type, sysadmfile;
-typealias $1_$2_home_t alias $1_$2_rw_t;
-typealias $1_$2_home_t alias $1_home_$2_t;
-
-# User side access
-create_dir_file($1_t, $1_$2_home_t)
-allow $1_t $1_$2_home_t:{ dir file lnk_file } { relabelfrom relabelto };
-
-# App side access
-home_domain_access($1_$2_t, $1, $2)
-')
-
-####################################################################
-# home_domain_ro (user, app)
-#
-# Creates a read-only domain in the user home where an application can
-# store its settings. It's fully accessible by the user, but
-# it's read-only for the application.
-#
-
-define(`home_domain_ro', `
-
-# Declare home domain
-# FIXME: the second alias is problematic because
-# home_domain and home_domain_ro cannot be used in parallel
-# Remove the second alias when compatibility is no longer an issue
-
-type $1_$2_ro_home_t, file_type, $1_file_type, sysadmfile;
-typealias $1_$2_ro_home_t alias $1_$2_ro_t;
-typealias $1_$2_ro_home_t alias $1_home_$2_t;
-
-# User side access
-create_dir_file($1_t, $1_$2_ro_home_t)
-allow $1_t $1_$2_ro_home_t:{ dir file lnk_file } { relabelfrom relabelto };
-
-# App side access
-home_domain_ro_access($1_$2_t, $1, $2)
-')
-
 #######################
 # application_domain(domain_prefix)
 #
@@ -589,12 +518,6 @@ domain_auto_trans(sysadm_t, $1_exec_t, $1_t)
 uses_shlib($1_t)
 ')
 
-define(`user_application_domain', `
-application_domain($1, `$2')
-in_user_role($1_t)
-domain_auto_trans(userdomain, $1_exec_t, $1_t)
-')
-
 define(`system_domain', `
 type $1_t, domain, privlog $2;
 type $1_exec_t, file_type, sysadmfile, exec_type;
@@ -603,23 +526,25 @@ uses_shlib($1_t)
 allow $1_t etc_t:dir r_dir_perms;
 ')
 
-# Do not flood message log, if the user does a browse
-define(`file_browse_domain', `
+# Dontaudit macros to prevent flooding the log
 
-# Regular files/directories that are not security sensitive
+define(`dontaudit_getattr', `
 dontaudit $1 file_type - secure_file_type:dir_file_class_set getattr; 
-dontaudit $1 file_type - secure_file_type:dir { read search };
-
-# /dev
-dontaudit $1 dev_fs:dir_file_class_set getattr;
-dontaudit $1 dev_fs:dir { read search };
-
-# /proc
-dontaudit $1 sysctl_t:dir_file_class_set getattr;
-dontaudit $1 proc_fs:dir { read search };
-
-')dnl end file_browse_domain
-
+dontaudit $1 unlabeled_t:dir_file_class_set getattr;
+dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir_file_class_set getattr;
+')dnl end dontaudit_getattr 
+
+define(`dontaudit_search_dir', `
+dontaudit $1 file_type - secure_file_type:dir search;
+dontaudit $1 unlabeled_t:dir search;
+dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir search;
+')dnl end dontaudit_search_dir
+
+define(`dontaudit_read_dir', `
+dontaudit $1 file_type - secure_file_type:dir read;
+dontaudit $1 unlabeled_t:dir read;
+dontaudit $1 { fs_type proc_fs dev_fs sysctl_type }:dir read;
+')dnl end dontaudit_read_dir
 
 # Define legacy_domain  for legacy binaries (java)
 # "legacy" binary == lacks PT_GNU_STACK header, i.e. built with an old
@@ -629,12 +554,46 @@ dontaudit $1 proc_fs:dir { read search };
 # shlib_t and ld_so_t unlike non-legacy binaries.
 
 define(`legacy_domain', `
-allow $1_t self:process { execmem };
+allow $1_t self:process { execmem execstack };
 allow $1_t { texrel_shlib_t shlib_t }:file execmod;
 allow $1_t ld_so_t:file execmod;
 allow $1_t ld_so_cache_t:file execute;
 ')
 
+
+# Allow domain to perform polyinstantiation functions
+# polyinstantiater(domain)
+
+define(`polyinstantiater', `
+
+ifdef(`support_polyinstantiation', `
+# Need to give access to /selinux/member
+allow $1 security_t:security compute_member;
+
+# Need to give access to the directories to be polyinstantiated
+allow $1 polydir:dir { getattr mounton add_name create setattr write search };
+
+# Need to give access to the polyinstantiated subdirectories
+allow $1 polymember:dir {getattr search };
+
+# Need to give access to parent directories where original
+# is remounted for polyinstantiation aware programs (like gdm)
+allow $1 polyparent:dir { getattr mounton };
+
+# Need to give permission to create directories where applicable
+allow $1 polymember: dir { create setattr };
+allow $1 polydir: dir { write add_name };
+allow $1 self:process setfscreate;
+allow $1 polyparent:dir { write add_name };
+# Default type for mountpoints
+allow $1 poly_t:dir { create mounton };
+
+# Need sys_admin capability for mounting
+allow $1 self:capability sys_admin;
+')dnl end else support_polyinstantiation
+
+')dnl end polyinstantiater
+
 # 
 # Define a domain that can do anything, so that it is
 # effectively unconfined by the SELinux policy.  This
@@ -679,6 +638,7 @@ can_sysctl($1)
 allow $1 node_type:node *;
 allow $1 netif_type:netif *;
 allow $1 port_type:{ tcp_socket udp_socket } { send_msg recv_msg };
+allow $1 port_type:tcp_socket name_connect;
 
 # Bind to any network address.
 allow $1 port_type:{ tcp_socket udp_socket } name_bind;
@@ -698,13 +658,24 @@ allow $1 domain:process ~{ transition dyntransition execmem };
 allow $1 self:process transition;
 
 if (allow_execmem) {
-# Allow loading DSOs that require executable stack.
+# Allow making anonymous memory executable, e.g. 
+# for runtime-code generation or executable stack.
 allow $1 self:process execmem;
 }
 
+if (allow_execmem && allow_execstack) {
+# Allow making the stack executable via mprotect.
+allow $1 self:process execstack;
+}
+
 if (allow_execmod) {
 # Allow text relocations on system shared libraries, e.g. libGL.
+ifdef(`targeted_policy', `
+allow $1 file_type:file execmod;
+', `
 allow $1 texrel_shlib_t:file execmod;
+allow $1 home_type:file execmod;
+')
 }
 
 # Create/access any System V IPC objects.
@@ -737,3 +708,22 @@ allow $1 nscd_t:nscd *;
 ')
 
 ')dnl end unconfined_domain
+
+
+define(`access_removable_media', `
+
+can_exec($1, { removable_t noexattrfile } )
+if (user_rw_noexattrfile) {
+create_dir_file($1, noexattrfile)
+create_dir_file($1, removable_t)
+# Write floppies 
+allow $1 removable_device_t:blk_file rw_file_perms;
+allow $1 usbtty_device_t:chr_file write;
+} else {
+r_dir_file($1, noexattrfile)
+r_dir_file($1, removable_t)
+allow $1 removable_device_t:blk_file r_file_perms;
+}
+allow $1 removable_t:filesystem getattr;
+
+')
diff --git a/strict/macros/network_macros.te b/strict/macros/network_macros.te
index bf6761f..d5eaca1 100644
--- a/strict/macros/network_macros.te
+++ b/strict/macros/network_macros.te
@@ -155,14 +155,23 @@ allow $1 mount_t:udp_socket rw_socket_perms;
 ')dnl end can_network definition
 
 define(`can_resolve',`
-ifdef(`use_dns',`
 can_network_udp($1, `dns_port_t')
 ')
+
+define(`can_portmap',`
+can_network_client($1, `portmap_port_t')
+allow $1 portmap_port_t:tcp_socket name_connect;
 ')
 
 define(`can_ldap',`
-ifdef(`slapd.te',`
 can_network_client_tcp($1, `ldap_port_t')
-')
+allow $1 ldap_port_t:tcp_socket name_connect;
 ')
 
+define(`can_winbind',`
+ifdef(`winbind.te', `
+allow $1 winbind_var_run_t:dir { getattr search };
+allow $1 winbind_t:unix_stream_socket connectto;
+allow $1 winbind_var_run_t:sock_file { getattr read write };
+')
+')
diff --git a/strict/macros/program/games_domain.te b/strict/macros/program/games_domain.te
index 9816896..d4c1d05 100644
--- a/strict/macros/program/games_domain.te
+++ b/strict/macros/program/games_domain.te
@@ -10,49 +10,80 @@
 #
 #
 define(`games_domain', `
-x_client_domain($1, `games', `, transitionbool')
 
+type $1_games_t, domain, nscd_client_domain;
+
+# Type transition
+if (! disable_games_trans) {
+domain_auto_trans($1_t, games_exec_t, $1_games_t)
+}
+can_exec($1_games_t, games_exec_t)
+role $1_r types $1_games_t;
+
+can_create_pty($1_games)
+
+# X access, GNOME, /tmp files
+x_client_domain($1_games, $1)
+tmp_domain($1_games, `', { dir notdevfile_class_set })
+gnome_application($1_games, $1)
+gnome_file_dialog($1_games, $1)
+
+# Games seem to need this
+if (allow_execmem) {
+allow $1_games_t self:process execmem;
+}
+
+allow $1_games_t texrel_shlib_t:file execmod;
 allow $1_games_t var_t:dir { search getattr };
 rw_dir_create_file($1_games_t, games_data_t)
 allow $1_games_t sound_device_t:chr_file rw_file_perms;
-r_dir_file($1_games_t, usr_t)
 can_udp_send($1_games_t, $1_games_t)
 can_tcp_connect($1_games_t, $1_games_t)
 
 # Access /home/user/.gnome2
-create_dir_file($1_games_t, $1_home_t)
-allow $1_games_t $1_home_dir_t:dir search;
-allow $1_games_t $1_home_t:dir { read getattr };
+# FIXME: Change to use per app types
+create_dir_file($1_games_t, $1_gnome_settings_t)
 
+# FIXME: why is this necessary - ORBit?
+# ORBit works differently now
 create_dir_file($1_games_t, $1_tmp_t)
 allow $1_games_t $1_tmp_t:sock_file create_file_perms;
+can_unix_connect($1_t, $1_games_t)
+can_unix_connect($1_games_t, $1_t)
 
-dontaudit $1_games_t sysctl_t:dir search;
-
-tmp_domain($1_games)
-allow $1_games_t urandom_device_t:chr_file { getattr ioctl read };
 ifdef(`xdm.te', `
 allow $1_games_t xdm_tmp_t:dir rw_dir_perms;
 allow $1_games_t xdm_tmp_t:sock_file create_file_perms;
 allow $1_games_t xdm_var_lib_t:file { getattr read };
 ')dnl end if xdm.te
 
-can_unix_connect($1_t, $1_games_t)
-can_unix_connect($1_games_t, $1_t)
-
 allow $1_games_t var_lib_t:dir search;
 r_dir_file($1_games_t, man_t)
-allow $1_games_t proc_t:file { read getattr };
+allow $1_games_t { proc_t self }:dir search;
+allow $1_games_t { proc_t self }:{ file lnk_file } { read getattr };
 ifdef(`mozilla.te', ` 
 dontaudit $1_games_t $1_mozilla_t:unix_stream_socket connectto;
 ')
 allow $1_games_t event_device_t:chr_file getattr;
 allow $1_games_t mouse_device_t:chr_file getattr;
+
 allow $1_games_t self:file { getattr read };
+allow $1_games_t self:sem create_sem_perms;
+
+allow $1_games_t { bin_t sbin_t }:dir { getattr search };
+can_exec($1_games_t, { shell_exec_t bin_t utempter_exec_t })
+allow $1_games_t bin_t:lnk_file read;
 
-# kpat spews errors
-dontaudit $1_games_t bin_t:dir getattr;
 dontaudit $1_games_t var_run_t:dir search;
+dontaudit $1_games_t initrc_var_run_t:file { read write };
+dontaudit $1_games_t var_log_t:dir search;
+
+can_network($1_games_t)
+allow $1_games_t port_t:tcp_socket name_bind;
+allow $1_games_t port_t:tcp_socket name_connect;
+
+# Suppress .icons denial until properly implemented
+dontaudit $1_games_t $1_home_t:dir read;
 
 ')dnl end macro definition
 
diff --git a/strict/macros/program/gift_macros.te b/strict/macros/program/gift_macros.te
index 3589c05..c75a061 100644
--- a/strict/macros/program/gift_macros.te
+++ b/strict/macros/program/gift_macros.te
@@ -12,49 +12,34 @@
 
 define(`gift_domain', `
 
-# Connect to X
-x_client_domain($1, gift, `')	
-
-# Transition
+# Type transition
+type $1_gift_t, domain, nscd_client_domain;
 domain_auto_trans($1_t, gift_exec_t, $1_gift_t)
-can_exec($1_gift_t, gift_exec_t)
 role $1_r types $1_gift_t;
 
-# Self permissions
-allow $1_gift_t self:process getsched;
-
-# Home files
+# X access, Home files, GNOME, /tmp
+x_client_domain($1_gift, $1)
+gnome_application($1_gift, $1)
 home_domain($1, gift)
+file_type_auto_trans($1_gift_t, $1_home_dir_t, $1_gift_home_t, dir)
 
-# Fonts, icons
-r_dir_file($1_gift_t, usr_t)
-r_dir_file($1_gift_t, fonts_t)
+# Allow the user domain to signal/ps.
+can_ps($1_t, $1_gift_t)
+allow $1_t $1_gift_t:process signal_perms;
 
 # Launch gift daemon
-allow $1_gift_t self:process fork;
+allow $1_gift_t bin_t:dir search;
 domain_auto_trans($1_gift_t, giftd_exec_t, $1_giftd_t)
 
 # Connect to gift daemon
-can_network($1_gift_t)
+can_network_client_tcp($1_gift_t, giftd_port_t)
+allow $1_gift_t giftd_port_t:tcp_socket name_connect;
 
 # Read /proc/meminfo
 allow $1_gift_t proc_t:dir search;
 allow $1_gift_t proc_t:file { getattr read };
 
-# Tmp/ORBit
-tmp_domain($1_gift)
-file_type_auto_trans($1_gift_t, $1_tmp_t, $1_gift_tmp_t)
-can_unix_connect($1_t, $1_gift_t)
-can_unix_connect($1_gift_t, $1_t)
-allow $1_t $1_gift_tmp_t:sock_file write;
-allow $1_gift_t $1_tmp_t:file { getattr read write lock };
-allow $1_gift_t $1_tmp_t:sock_file { read write };
-dontaudit $1_gift_t $1_tmp_t:dir setattr;
-
-# Access random device
-allow $1_gift_t urandom_device_t:chr_file { read getattr ioctl };
-
-# giftui looks in .icons, .themes, .fonts-cache.
+# giftui looks in .icons, .themes.
 dontaudit $1_gift_t $1_home_t:dir { getattr read search };
 dontaudit $1_gift_t $1_home_t:file { getattr read };
 
@@ -79,26 +64,34 @@ allow $1_giftd_t self:unix_stream_socket create_socket_perms;
 read_sysctl($1_giftd_t)
 read_locale($1_giftd_t)
 uses_shlib($1_giftd_t)
+access_terminal($1_giftd_t, $1)
+
+# Read /proc/meminfo
+allow $1_giftd_t proc_t:dir search;
+allow $1_giftd_t proc_t:file { getattr read };
+
+# Read /etc/mtab
+allow $1_giftd_t etc_runtime_t:file { getattr read };
 
 # Access home domain
 home_domain_access($1_giftd_t, $1, gift)
-	
-# Allow networking
-allow $1_giftd_t port_t:tcp_socket name_bind;
-allow $1_giftd_t port_t:udp_socket name_bind;
+file_type_auto_trans($1_gift_t, $1_home_dir_t, $1_gift_home_t, dir)
+
+# Serve content on various p2p networks. Ports can be random.
 can_network_server($1_giftd_t)
-can_network_client($1_giftd_t)
+allow $1_giftd_t self:udp_socket listen;
+allow $1_giftd_t port_type:{ tcp_socket udp_socket } name_bind;
 
-# FIXME: ???
-dontaudit $1_giftd_t self:udp_socket listen;
+# Connect to various p2p networks. Ports can be random.
+can_network_client($1_giftd_t)
+allow $1_giftd_t port_type:tcp_socket name_connect;
 
 # Plugins
 r_dir_file($1_giftd_t, usr_t)
 
 # Connect to xdm
 ifdef(`xdm.te', `
-allow $1_giftd_t xdm_t:fd use;
-allow $1_giftd_t xdm_t:fifo_file write;
+can_pipe_xdm($1_giftd_t)
 ') 
 
 ') dnl giftd_domain
diff --git a/strict/macros/program/userhelper_macros.te b/strict/macros/program/userhelper_macros.te
index 109b973..2c715d3 100644
--- a/strict/macros/program/userhelper_macros.te
+++ b/strict/macros/program/userhelper_macros.te
@@ -76,8 +76,7 @@ allow $1_userhelper_t devpts_t:dir r_dir_perms;
 allow $1_userhelper_t etc_t:file r_file_perms;
 
 # Read /var.
-allow $1_userhelper_t var_t:dir r_dir_perms;
-allow $1_userhelper_t var_t:notdevfile_class_set r_file_perms;
+r_dir_file($1_userhelper_t, var_t)
 
 # Read /dev directories and any symbolic links.
 allow $1_userhelper_t device_t:dir r_dir_perms;
@@ -97,7 +96,7 @@ can_getsecurity($1_userhelper_t)
 allow $1_userhelper_t fs_t:filesystem getattr;
 
 # for some PAM modules and for cwd
-dontaudit $1_userhelper_t { home_root_t home_type }:dir search;
+allow $1_userhelper_t { home_root_t $1_home_dir_t }:dir search;
 
 allow $1_userhelper_t proc_t:dir search;
 allow $1_userhelper_t proc_t:file { getattr read };
@@ -120,8 +119,7 @@ role system_r types $1_userhelper_t;
 r_dir_file($1_userhelper_t, nfs_t)
 
 ifdef(`xdm.te', `
-allow $1_userhelper_t xdm_t:fd use;
-allow $1_userhelper_t xdm_t:fifo_file rw_file_perms;
+can_pipe_xdm($1_userhelper_t)
 allow $1_userhelper_t xdm_var_run_t:dir search;
 ')
 
diff --git a/strict/macros/program/ypbind_macros.te b/strict/macros/program/ypbind_macros.te
index 2157995..61db7cc 100644
--- a/strict/macros/program/ypbind_macros.te
+++ b/strict/macros/program/ypbind_macros.te
@@ -1,10 +1,12 @@
 
 define(`uncond_can_ypbind', `
-dontaudit $1 reserved_port_type:{ tcp_socket udp_socket } name_bind;
 can_network($1)
 r_dir_file($1,var_yp_t)
 allow $1 { reserved_port_t port_t }:{ tcp_socket udp_socket } name_bind;
+allow $1 { portmap_port_t reserved_port_t port_t }:tcp_socket name_connect;
 dontaudit $1 self:capability net_bind_service;
+dontaudit $1 reserved_port_type:tcp_socket name_connect;
+dontaudit $1 reserved_port_type:{ tcp_socket udp_socket } name_bind;
 ')
 
 define(`can_ypbind', `
diff --git a/strict/tunables/distro.tun b/strict/tunables/distro.tun
index 00b6eca..2d49189 100644
--- a/strict/tunables/distro.tun
+++ b/strict/tunables/distro.tun
@@ -5,7 +5,7 @@
 # appropriate ifdefs.
 
 
-define(`distro_redhat')
+dnl define(`distro_redhat')
 
 dnl define(`distro_suse')
 
diff --git a/strict/tunables/tunable.tun b/strict/tunables/tunable.tun
index bd8b797..a6cc2f4 100644
--- a/strict/tunables/tunable.tun
+++ b/strict/tunables/tunable.tun
@@ -1,27 +1,27 @@
-# Allow users to execute the mount command
-define(`user_can_mount')
-
 # Allow rpm to run unconfined.
-#define(`unlimitedRPM')
+dnl define(`unlimitedRPM')
 
 # Allow privileged utilities like hotplug and insmod to run unconfined.
-#define(`unlimitedUtils')
+dnl define(`unlimitedUtils')
 
 # Allow rc scripts to run unconfined, including any daemon
 # started by an rc script that does not have a domain transition
 # explicitly defined.
-#define(`unlimitedRC')
+dnl define(`unlimitedRC')
 
 # Allow sysadm_t to directly start daemons
 define(`direct_sysadm_daemon')
 
+# Do not allow sysadm_t to be in the security manager domain
+dnl define(`separate_secadm')
+
 # Do not audit things that we know to be broken but which
 # are not security risks
-define(`hide_broken_symptoms')
+dnl define(`hide_broken_symptoms')
 
 # Allow user_r to reach sysadm_r via su, sudo, or userhelper.
 # Otherwise, only staff_r can do so.
-define(`user_canbe_sysadm')
+dnl define(`user_canbe_sysadm')
 
 # Allow xinetd to run unconfined, including any services it starts
 # that do not have a domain transition explicitly defined.
@@ -29,3 +29,6 @@ dnl define(`unlimitedInetd')
 
 # for ndc_t to be used for restart shell scripts
 dnl define(`ndc_shell_script')
+
+# Enable Polyinstantiation support
+dnl define(`support_polyinstatiation')
diff --git a/strict/types/nfs.te b/strict/types/nfs.te
index 154a65b..9076bb8 100644
--- a/strict/types/nfs.te
+++ b/strict/types/nfs.te
@@ -13,7 +13,7 @@
 # The nfs_*_t types are used for specific NFS
 # servers in net_contexts or net_contexts.mls.
 #
-type nfs_t, fs_type;
+type nfs_t, mount_point, fs_type;
 
 #
 # Allow NFS files to be associated with an NFS file system.
diff --git a/strict/types/procfs.te b/strict/types/procfs.te
index 0cab0fa..20703ac 100644
--- a/strict/types/procfs.te
+++ b/strict/types/procfs.te
@@ -14,7 +14,7 @@
 # proc_mdstat_t is the type of /proc/mdstat.
 # proc_net_t is the type of /proc/net.
 #
-type proc_t, fs_type, proc_fs;
+type proc_t, fs_type, mount_point, proc_fs;
 type proc_kmsg_t, proc_fs;
 type proc_kcore_t, proc_fs;
 type proc_mdstat_t, proc_fs;
@@ -35,7 +35,7 @@ type proc_net_t, proc_fs;
 # These types are applied to both the entries in
 # /proc/sys and the corresponding sysctl parameters.
 #
-type sysctl_t, sysctl_type;
+type sysctl_t, mount_point, sysctl_type;
 type sysctl_fs_t, sysctl_type;
 type sysctl_kernel_t, sysctl_type;
 type sysctl_modprobe_t, sysctl_type;