df5eceb
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/Makefile policycoreutils-2.0.22/Makefile
e0e7eda
--- nsapolicycoreutils/Makefile	2007-07-16 14:20:43.000000000 -0400
85e2ce7
+++ policycoreutils-2.0.22/Makefile	2007-07-31 15:45:57.000000000 -0400
e568e7a
@@ -1,4 +1,4 @@
6f8d769
-SUBDIRS=setfiles semanage load_policy newrole run_init restorecond secon audit2allow audit2why scripts sestatus semodule_package semodule semodule_link semodule_expand semodule_deps setsebool po
6f8d769
+SUBDIRS=setfiles semanage load_policy newrole run_init restorecond secon audit2allow audit2why scripts sestatus semodule_package semodule semodule_link semodule_expand semodule_deps setsebool po gui
e568e7a
 
e568e7a
 all install relabel clean indent:
e568e7a
 	@for subdir in $(SUBDIRS); do \
df5eceb
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/restorecond/restorecond.c policycoreutils-2.0.22/restorecond/restorecond.c
e0e7eda
--- nsapolicycoreutils/restorecond/restorecond.c	2007-07-16 14:20:41.000000000 -0400
85e2ce7
+++ policycoreutils-2.0.22/restorecond/restorecond.c	2007-07-31 15:45:57.000000000 -0400
9ac2144
@@ -210,9 +210,10 @@
9ac2144
 			}
9ac2144
 
9ac2144
 			if (fsetfilecon(fd, scontext) < 0) {
9ac2144
-				syslog(LOG_ERR,
9ac2144
-				       "set context %s->%s failed:'%s'\n",
9ac2144
-				       filename, scontext, strerror(errno));
9ac2144
+				if (errno != EOPNOTSUPP) 
9ac2144
+					syslog(LOG_ERR,
9ac2144
+					       "set context %s->%s failed:'%s'\n",
9ac2144
+					       filename, scontext, strerror(errno));
9ac2144
 				if (retcontext >= 0)
9ac2144
 					free(prev_context);
9ac2144
 				free(scontext);
9ac2144
@@ -225,8 +226,9 @@
9ac2144
 		if (retcontext >= 0)
9ac2144
 			free(prev_context);
9ac2144
 	} else {
9ac2144
-		syslog(LOG_ERR, "get context on %s failed: '%s'\n",
9ac2144
-		       filename, strerror(errno));
9ac2144
+		if (errno != EOPNOTSUPP) 
9ac2144
+			syslog(LOG_ERR, "get context on %s failed: '%s'\n",
9ac2144
+			       filename, strerror(errno));
9ac2144
 	}
9ac2144
 	free(scontext);
9ac2144
 	close(fd);
e0e7eda
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/run_init/Makefile policycoreutils-2.0.22/run_init/Makefile
e0e7eda
--- nsapolicycoreutils/run_init/Makefile	2007-07-16 14:20:41.000000000 -0400
85e2ce7
+++ policycoreutils-2.0.22/run_init/Makefile	2007-07-31 15:45:57.000000000 -0400
e0e7eda
@@ -34,8 +34,8 @@
e0e7eda
 install: all
e0e7eda
 	test -d $(SBINDIR)      || install -m 755 -d $(SBINDIR)
e0e7eda
 	test -d $(MANDIR)/man1 || install -m 755 -d $(MANDIR)/man1
e0e7eda
-	install -m 555 run_init $(SBINDIR)
e0e7eda
-	install -m 555 open_init_pty $(SBINDIR)
e0e7eda
+	install -m 755 run_init $(SBINDIR)
e0e7eda
+	install -m 755 open_init_pty $(SBINDIR)
e0e7eda
 	install -m 644 run_init.8 $(MANDIR)/man8/
e0e7eda
 	install -m 644 open_init_pty.8 $(MANDIR)/man8/
e0e7eda
 ifeq (${PAMH}, /usr/include/security/pam_appl.h)
df5eceb
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/scripts/chcat policycoreutils-2.0.22/scripts/chcat
e0e7eda
--- nsapolicycoreutils/scripts/chcat	2007-07-16 14:20:41.000000000 -0400
85e2ce7
+++ policycoreutils-2.0.22/scripts/chcat	2007-07-31 15:45:57.000000000 -0400
df5eceb
@@ -77,7 +77,7 @@
df5eceb
             
df5eceb
         if len(cats) > 0:
df5eceb
             new_serange = "%s-%s:%s" % (serange[0], top[0], ",".join(cats))
df5eceb
-        else
df5eceb
+        else:
df5eceb
             new_serange = "%s-%s" % (serange[0], top[0])
df5eceb
             
df5eceb
         if add_ind:
df5eceb
@@ -155,7 +155,7 @@
df5eceb
 
df5eceb
         if len(cats) > 0:
df5eceb
             new_serange = "%s-%s:%s" % (serange[0], top[0], ",".join(cats))
df5eceb
-        else
df5eceb
+        else:
df5eceb
             new_serange = "%s-%s" % (serange[0], top[0])
df5eceb
             
df5eceb
         if add_ind:
18e5e75
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/scripts/fixfiles policycoreutils-2.0.22/scripts/fixfiles
18e5e75
--- nsapolicycoreutils/scripts/fixfiles	2007-07-16 14:20:41.000000000 -0400
85e2ce7
+++ policycoreutils-2.0.22/scripts/fixfiles	2007-07-31 15:45:57.000000000 -0400
2701345
@@ -88,7 +88,7 @@
2701345
                   esac; \
2701345
                fi; \
2701345
             done | \
2701345
-	while read pattern ; do find $pattern \
2701345
+	while read pattern ; do sh -c "find $pattern" \
2701345
 		      ! \( -fstype ext2 -o -fstype ext3 -o -fstype jfs -o -fstype xfs \) -prune  -o \
2701345
 		      \( -wholename /home -o -wholename /root -o -wholename /tmp -wholename /dev \) -prune -o -print; \
2701345
 		      done 2> /dev/null | \
18e5e75
@@ -108,6 +108,7 @@
18e5e75
 
18e5e75
 rpmlist() {
18e5e75
 rpm -q --qf '[%{FILESTATES} %{FILENAMES}\n]' "$1" | grep '^0 ' | cut -f2- -d ' '
18e5e75
+[ ${PIPESTATUS[0]} != 0 ] && echo "$1 not found" >/dev/stderr
18e5e75
 }
18e5e75
 
18e5e75
 # 
9c2c4da
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/scripts/genhomedircon policycoreutils-2.0.22/scripts/genhomedircon
e0e7eda
--- nsapolicycoreutils/scripts/genhomedircon	2007-07-16 14:20:41.000000000 -0400
4ecb32d
+++ policycoreutils-2.0.22/scripts/genhomedircon	2007-08-01 16:03:41.000000000 -0400
4ecb32d
@@ -139,7 +139,22 @@
4ecb32d
 		self.default_user = "user_u"
4ecb32d
 		self.default_prefix = "user"
4ecb32d
 		self.users = self.getUsers()
4ecb32d
+		fd = open(self.getFileContextFile())
4ecb32d
+		self.fclines=[]
4ecb32d
+		for i in fd.readlines():
4ecb32d
+		    try:
4ecb32d
+			    regex = i.split()[0]
4ecb32d
+			    #match a trailing .+
4ecb32d
+			    regex = re.sub("\.+$", "", regex)
4ecb32d
+			    regex = re.sub("\.\*$", "", regex)
4ecb32d
+			    regex = re.sub("\(\/\.\*\)\?", "", regex)
4ecb32d
+			    regex = regex + "/*$"
4ecb32d
+			    self.fclines.append(re.compile(regex))
4ecb32d
+		    except:
4ecb32d
+			    continue
4ecb32d
 
4ecb32d
+		fd.close()
4ecb32d
+		
4ecb32d
 	def getFileContextDir(self):
4ecb32d
 		return self.selinuxdir+self.type+self.filecontextdir
4ecb32d
 
4ecb32d
@@ -289,20 +304,9 @@
4ecb32d
 		return ret+"\n"
4ecb32d
 
4ecb32d
 	def checkExists(self, home):
4ecb32d
-		fd = open(self.getFileContextFile())
4ecb32d
-		for i in  fd.readlines():
4ecb32d
-                    if len(i) == 0:
4ecb32d
-			    continue
4ecb32d
+		for i in self.fclines:
4ecb32d
 		    try:
4ecb32d
-			    regex = i.split()[0]
4ecb32d
-			    #match a trailing .+
4ecb32d
-			    regex = re.sub("\.+$", "", regex)
4ecb32d
-			    regex = re.sub("\.\*$", "", regex)
4ecb32d
-			    #strip a (/.*)? which matches anything trailing to a /*$ which matches trailing /'s
4ecb32d
-			    
4ecb32d
-			    regex = re.sub("\(\/\.\*\)\?", "", regex)
4ecb32d
-			    regex = regex + "/*$"
9c2c4da
-			    if re.search(regex,home, 0):
4ecb32d
+			    if i.match(home):
9c2c4da
 				    return 1
9c2c4da
 		    except:
9c2c4da
 			    continue
df5eceb
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/semanage/semanage policycoreutils-2.0.22/semanage/semanage
e0e7eda
--- nsapolicycoreutils/semanage/semanage	2007-07-16 14:20:41.000000000 -0400
85e2ce7
+++ policycoreutils-2.0.22/semanage/semanage	2007-07-31 15:45:57.000000000 -0400
4efe23c
@@ -34,7 +34,10 @@
4efe23c
 sys.stdout = codecs.getwriter(locale.getpreferredencoding())(sys.__stdout__, 'replace')
4efe23c
 
4efe23c
 try:
4efe23c
-       gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
4efe23c
+       gettext.install(PROGNAME,
4efe23c
+                       localedir="/usr/share/locale",
4efe23c
+                       unicode=False,
4efe23c
+                       codeset = 'utf-8')
4efe23c
 except IOError:
4efe23c
        import __builtin__
4efe23c
        __builtin__.__dict__['_'] = unicode
df5eceb
diff --exclude-from=exclude --exclude=sepolgen-1.0.8 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/semanage/seobject.py policycoreutils-2.0.22/semanage/seobject.py
e0e7eda
--- nsapolicycoreutils/semanage/seobject.py	2007-07-16 14:20:41.000000000 -0400
b9cac61
+++ policycoreutils-2.0.22/semanage/seobject.py	2007-08-01 09:54:14.000000000 -0400
64fb16a
@@ -210,6 +210,7 @@
73f3144
 		os.write(fd, self.out())
73f3144
 		os.close(fd)
73f3144
 		os.rename(newfilename, self.filename)
73f3144
+                os.system("/sbin/service mcstrans reload > /dev/null")
1e9f6c8
                 
73f3144
 class semanageRecords:
73f3144
 	def __init__(self):
b9cac61
@@ -1024,14 +1025,31 @@
85e2ce7
 	def __init__(self):
85e2ce7
 		semanageRecords.__init__(self)
85e2ce7
 		
b9cac61
-	def add(self, target, type, ftype = "", serange = "", seuser = "system_u"):
b9cac61
+        def createcon(self, target, seuser = "system_u"):
85e2ce7
+                (rc, con) = semanage_context_create(self.sh)
85e2ce7
+                if rc < 0:
85e2ce7
+                       raise ValueError(_("Could not create context for %s") % target)
b9cac61
 		if seuser == "":
b9cac61
 			seuser = "system_u"
b9cac61
+
b9cac61
+                rc = semanage_context_set_user(self.sh, con, seuser)
85e2ce7
+                if rc < 0:
85e2ce7
+                       raise ValueError(_("Could not set user in file context for %s") % target)
85e2ce7
+		
85e2ce7
+                rc = semanage_context_set_role(self.sh, con, "object_r")
85e2ce7
+                if rc < 0:
85e2ce7
+                       raise ValueError(_("Could not set role in file context for %s") % target)
85e2ce7
+
b9cac61
 		if is_mls_enabled == 1:
b9cac61
-			if serange == "":
b9cac61
-				serange = "s0"
b9cac61
-			else:
b9cac61
-				serange = untranslate(serange)
85e2ce7
+                       rc = semanage_context_set_mls(self.sh, con, "s0")
85e2ce7
+                       if rc < 0:
85e2ce7
+                              raise ValueError(_("Could not set mls fields in file context for %s") % target)
85e2ce7
+
85e2ce7
+                return con
85e2ce7
+               
b9cac61
+	def add(self, target, type, ftype = "", serange = "", seuser = "system_u"):
b9cac61
+		if is_mls_enabled == 1:
b9cac61
+                       serange = untranslate(serange)
b9cac61
 			
b9cac61
 		if type == "":
b9cac61
 			raise ValueError(_("SELinux Type is required"))
b9cac61
@@ -1051,33 +1069,23 @@
2701345
 			raise ValueError(_("Could not create file context for %s") % target)
2701345
 		
2701345
 		rc = semanage_fcontext_set_expr(self.sh, fcontext, target)
2701345
-		(rc, con) = semanage_context_create(self.sh)
2701345
-		if rc < 0:
2701345
-			raise ValueError(_("Could not create context for %s") % target)
2701345
-
2701345
-		rc = semanage_context_set_user(self.sh, con, seuser)
2701345
-		if rc < 0:
2701345
-			raise ValueError(_("Could not set user in file context for %s") % target)
2701345
-		
2701345
-		rc = semanage_context_set_role(self.sh, con, "object_r")
2701345
-		if rc < 0:
2701345
-			raise ValueError(_("Could not set role in file context for %s") % target)
2701345
-
2701345
-		rc = semanage_context_set_type(self.sh, con, type)
2701345
-		if rc < 0:
2701345
-			raise ValueError(_("Could not set type in file context for %s") % target)
b9cac61
+                if type != "<<none>>":
b9cac61
+                       con = self.createcon(target, seuser)
b9cac61
 
2701345
-		if serange != "":
2701345
-			rc = semanage_context_set_mls(self.sh, con, serange)
2701345
-			if rc < 0:
2701345
-				raise ValueError(_("Could not set mls fields in file context for %s") % target)
2701345
+                       rc = semanage_context_set_type(self.sh, con, type)
2701345
+                       if rc < 0:
2701345
+                              raise ValueError(_("Could not set type in file context for %s") % target)
2701345
+
2701345
+                       if serange != "":
2701345
+                              rc = semanage_context_set_mls(self.sh, con, serange)
2701345
+                              if rc < 0:
2701345
+                                     raise ValueError(_("Could not set mls fields in file context for %s") % target)
85e2ce7
+                       rc = semanage_fcontext_set_con(self.sh, fcontext, con)
85e2ce7
+                       if rc < 0:
85e2ce7
+                              raise ValueError(_("Could not set file context for %s") % target)
2701345
 
2701345
 		semanage_fcontext_set_type(fcontext, file_types[ftype])
2701345
 
85e2ce7
-		rc = semanage_fcontext_set_con(self.sh, fcontext, con)
85e2ce7
-		if rc < 0:
85e2ce7
-			raise ValueError(_("Could not set file context for %s") % target)
85e2ce7
-
85e2ce7
 		rc = semanage_begin_transaction(self.sh)
85e2ce7
 		if rc < 0:
85e2ce7
 			raise ValueError(_("Could not start semanage transaction"))
b9cac61
@@ -1090,7 +1098,8 @@
85e2ce7
 		if rc < 0:
85e2ce7
 			raise ValueError(_("Could not add file context for %s") % target)
85e2ce7
 
85e2ce7
-		semanage_context_free(con)
85e2ce7
+                if type != "<<none>>":
85e2ce7
+                       semanage_context_free(con)
85e2ce7
 		semanage_fcontext_key_free(k)
85e2ce7
 		semanage_fcontext_free(fcontext)
85e2ce7
 
b9cac61
@@ -1112,16 +1121,29 @@
85e2ce7
 		if rc < 0:
85e2ce7
 			raise ValueError(_("Could not query file context for %s") % target)
85e2ce7
 
85e2ce7
-		con = semanage_fcontext_get_con(fcontext)
85e2ce7
+                if setype != "<<none>>":
85e2ce7
+                       con = semanage_fcontext_get_con(fcontext)
85e2ce7
 			
85e2ce7
-		if serange != "":
85e2ce7
-			semanage_context_set_mls(self.sh, con, untranslate(serange))
85e2ce7
-		if seuser != "":
85e2ce7
-			semanage_context_set_user(self.sh, con, seuser)	
85e2ce7
-		if setype != "":
85e2ce7
-			semanage_context_set_type(self.sh, con, setype)
85e2ce7
-
85e2ce7
-		rc = semanage_begin_transaction(self.sh)
85e2ce7
+                       if con == None:
b9cac61
+                              con = self.createcon(target)
85e2ce7
+                              
85e2ce7
+                       if serange != "":
85e2ce7
+                              semanage_context_set_mls(self.sh, con, untranslate(serange))
85e2ce7
+                       if seuser != "":
b9cac61
+                              semanage_context_set_user(self.sh, con, seuser)
b9cac61
+                              
85e2ce7
+                       if setype != "":
85e2ce7
+                              semanage_context_set_type(self.sh, con, setype)
85e2ce7
+
85e2ce7
+                       rc = semanage_fcontext_set_con(self.sh, fcontext, con)
85e2ce7
+                       if rc < 0:
85e2ce7
+                              raise ValueError(_("Could not set file context for %s") % target)
85e2ce7
+                else:
85e2ce7
+                       rc = semanage_fcontext_set_con(self.sh, fcontext, None)
85e2ce7
+                       if rc < 0:
85e2ce7
+                              raise ValueError(_("Could not set file context for %s") % target)
85e2ce7
+                       
85e2ce7
+                rc = semanage_begin_transaction(self.sh)
85e2ce7
 		if rc < 0:
85e2ce7
 			raise ValueError(_("Could not start semanage transaction"))
85e2ce7
 
b9cac61
@@ -1283,9 +1305,12 @@
7e97034
 			raise ValueError(_("Could not list booleans"))
7e97034
 
7e97034
 		for boolean in self.blist:
7e97034
-			name = semanage_bool_get_name(boolean)
7e97034
-			value = semanage_bool_get_value(boolean)
7e97034
-			ddict[name] = value
7e97034
+                       value = []
7e97034
+                       name = semanage_bool_get_name(boolean)
7e97034
+                       value[0] = semanage_bool_get_value(boolean)
7e97034
+                       value[1] = selinux.security_get_boolean_pending(boolean)
7e97034
+                       value[2] = selinux.security_get_boolean_active(boolean)
7e97034
+                       ddict[name] = value
7e97034
 
7e97034
 		return ddict
7e97034