rpms/policycoreutils/devel policycoreutils-gui.patch, NONE, 1.1 .cvsignore, 1.138, 1.139 policycoreutils-rhat.patch, 1.284, 1.285 policycoreutils.spec, 1.370, 1.371 sources, 1.143, 1.144

fedora-cvs-commits at redhat.com fedora-cvs-commits at redhat.com
Tue Feb 20 14:58:01 UTC 2007


Author: dwalsh

Update of /cvs/dist/rpms/policycoreutils/devel
In directory cvs.devel.redhat.com:/tmp/cvs-serv4298

Modified Files:
	.cvsignore policycoreutils-rhat.patch policycoreutils.spec 
	sources 
Added Files:
	policycoreutils-gui.patch 
Log Message:
* Tue Feb 20 2007 Dan Walsh <dwalsh at redhat.com> 2.0.2-1
- Update to upstream
	* Merged seobject exception handler fix from Caleb Case.
	* Merged setfiles memory leak patch from Todd Miller.


policycoreutils-gui.patch:
 Makefile                    |   30 
 booleansPage.py             |  199 +++
 fcontextPage.py             |  158 ++
 loginsPage.py               |  161 ++
 mappingsPage.py             |   54 
 modulesPage.py              |  161 ++
 portsPage.py                |  214 +++
 selinux.tbl                 |  265 ++++
 semanagePage.py             |  109 +
 statusPage.py               |  213 +++
 system-config-selinux.glade | 2803 ++++++++++++++++++++++++++++++++++++++++++++
 system-config-selinux.py    |  156 ++
 translationsPage.py         |  109 +
 usersPage.py                |  155 ++
 14 files changed, 4787 insertions(+)

--- NEW FILE policycoreutils-gui.patch ---
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/booleansPage.py policycoreutils-2.0.1/gui/booleansPage.py
--- nsapolicycoreutils/gui/booleansPage.py	1969-12-31 19:00:00.000000000 -0500
+++ policycoreutils-2.0.1/gui/booleansPage.py	2007-02-15 15:16:09.000000000 -0500
@@ -0,0 +1,199 @@
+#
+# booleansPage.py - GUI for Booleans page in system-config-securitylevel
+#
+# Brent Fox <bfox at redhat.com>
+# Dan Walsh <dwalsh at redhat.com>
+#
+# Copyright 2006 Red Hat, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+#
+import string
+import gtk
+import gtk.glade
+import os
+import libxml2
+import gobject
+import sys
+import tempfile
+
+INSTALLPATH='/usr/share/system-config-selinux'
+sys.path.append(INSTALLPATH)
+
+from Conf import *
+import commands
+ENFORCING=0
+PERMISSIVE=1
+DISABLED=2
+
+##
+## I18N
+## 
+PROGNAME="system-config-selinux"
+
+import gettext
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
+gettext.textdomain(PROGNAME)
+try:
+    gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
+except IOError:
+    import __builtin__
+    __builtin__.__dict__['_'] = unicode
+
+class Translation:
+    def __init__(self):
+        self.translation={}
+        fd=open(INSTALLPATH + "/selinux.tbl","r")
+        lines=fd.readlines()
+        fd.close()
+        for i in lines:
+            try:
+                line=i.strip().split("_(\"")
+                key=line[0].strip()
+                category=line[1].split("\"")[0]
+                value=line[2].split("\"")[0]
+                self.translation[key]=(category,value)
+            except:
+                continue
+
+    def get_category(self,key):
+        try:
+            return _(self.translation[key][0])
+        except:
+            return _("Other")
+
+    def get_value(self,key):
+        try:
+            return _(self.translation[key][1])
+        except:
+            return key
+
+class Modifier:
+    def __init__(self,name, on, save):
+        self.on=on
+        self.name=name
+        self.save=save
+
+    def set(self,value):
+        self.on=value
+        self.save=True
+
+    def isOn(self):
+        return self.on
+
+class Boolean(Modifier):
+    def __init__(self,name, val, save=False):
+        Modifier.__init__(self,name, val, save)
+
+class Modifiers:
+    def __init__(self,store):
+        self.modifiers={}
+        self.translation=Translation()
+        self.store=store
+        self.store.clear()
+
+    def add(self,name,val):
+        if name == "targeted_policy":
+            return
+        category=self.translation.get_category(name)
+        if not self.modifiers.has_key(category):
+            self.modifiers[category]={}
+            iter=self.store.append(None)
+            self.modifiers[category]["iter"] = iter
+            self.store.set_value(iter, 1, category)
+            self.store.set_value(iter, 3, False)
+
+        self.modifiers[category][name]=val;
+        iter=self.store.append(self.modifiers[category]["iter"])
+        self.store.set_value(iter, 0, val.isOn())
+        self.store.set_value(iter, 1, self.translation.get_value(name))
+        self.store.set_value(iter, 2, name)
+        self.store.set_value(iter, 3, True)
+
+    def set(self,name,val):
+        category=self.translation.get_category(name)
+        self.modifiers[category][name].set(val)
+
+    def isBoolean(self,name):
+        c=self.translation.get_category(name)
+        return isinstance(self.modifiers[c][name], Boolean)
+
+    def get_booleans(self):
+        booleans={}
+        for c in self.modifiers.keys():
+            for n in self.modifiers[c].keys():
+                if isinstance(self.modifiers[c][n], Boolean):
+                    booleans[n]=self.modifiers[c][n]
+        return booleans
+
+class booleansPage:
+    def __init__(self, xml, doDebug=None):
+        self.xml = xml
+        self.types=[]
+        self.selinuxsupport = True
+        self.translation = Translation()
+        self.typechanged = False
+        self.doDebug = doDebug
+
+        # Bring in widgets from glade file.
+        self.typeHBox = xml.get_widget("typeHBox")
+        self.booleanSW = xml.get_widget("booleanSW")
+        self.booleansView = xml.get_widget("booleansView")
+        self.typeLabel = xml.get_widget("typeLabel")
+        self.modifySeparator = xml.get_widget("modifySeparator")
+
+        listStore = gtk.ListStore(gobject.TYPE_STRING)
+        cell = gtk.CellRendererText()
+
+        self.booleansStore = gtk.TreeStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN)
+        self.booleansStore.set_sort_column_id(1, gtk.SORT_ASCENDING)        
+        self.booleansView.set_model(self.booleansStore)
+
+        checkbox = gtk.CellRendererToggle()
+        checkbox.connect("toggled", self.boolean_toggled)
+        col = gtk.TreeViewColumn('', checkbox, active = 0,visible=3)
+        col.set_fixed_width(20)
+        col.set_clickable(True)
+        self.booleansView.append_column(col)
+
+        col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=1)
+        self.booleansView.append_column(col)
+        self.refreshBooleans()
+            
+    def get_description(self):
+        return _("Boolean")
+
+    def refreshBooleans(self):
+        self.modifiers=Modifiers(self.booleansStore)
+        booleansList=commands.getoutput("/usr/sbin/getsebool -a").split("\n")
+        for i in booleansList:
+            rec=i.split()
+            name=rec[0]
+            if rec[2]=="on" or rec[2]=="active":
+                on=1
+            else:
+                on=0
+            self.modifiers.add(name,Boolean(name,on))
+
+    def boolean_toggled(self, widget, row):
+        if len(row) == 1:
+            return
+        iter = self.booleansStore.get_iter(row)
+        val = self.booleansStore.get_value(iter, 0)
+        key = self.booleansStore.get_value(iter, 2)
+        self.booleansStore.set_value(iter, 0 , not val)
[...4444 lines suppressed...]
+            iter = self.store.append()
+            self.store.set_value(iter, 0, k)
+            self.store.set_value(iter, 1, dict[k])
+        self.view.get_selection().select_path ((0,))
+
+    def dialogInit(self):
+        store, iter = self.view.get_selection().get_selected()
+        self.translationsLevelEntry.set_text(store.get_value(iter, 0))
+        self.translationsLevelEntry.set_sensitive(False)
+        self.translationsEntry.set_text(store.get_value(iter, 1))
+        
+    def dialogClear(self):
+        self.translationsLevelEntry.set_text("")
+        self.translationsLevelEntry.set_sensitive(True)
+        self.translationsEntry.set_text("")
+        
+    def delete(self):
+        store, iter = self.view.get_selection().get_selected()
+        try:
+            level = store.get_value(iter, 0)
+            self.translation.delete(level)
+            store.remove(iter)
+            self.view.get_selection().select_path ((0,))
+        except ValueError, e:
+            self.error(e.args[0])
+
+    def add(self):
+        level = self.translationsLevelEntry.get_text().strip()
+        translation = self.translationsEntry.get_text().strip()
+        self.translation.add(level, translation)
+        iter = self.store.append()
+        self.store.set_value(iter, 0, level)
+        self.store.set_value(iter, 1, translation)
+        
+    def modify(self):
+        level = self.translationsLevelEntry.get_text().strip()
+        translation = self.translationsEntry.get_text().strip()
+        self.translation.modify(level, translation)
+        store, iter = self.view.get_selection().get_selected()
+        self.store.set_value(iter, 0, level)
+        self.store.set_value(iter, 1, translation)
diff --exclude-from=exclude -N -u -r nsapolicycoreutils/gui/usersPage.py policycoreutils-2.0.1/gui/usersPage.py
--- nsapolicycoreutils/gui/usersPage.py	1969-12-31 19:00:00.000000000 -0500
+++ policycoreutils-2.0.1/gui/usersPage.py	2007-02-15 15:16:09.000000000 -0500
@@ -0,0 +1,155 @@
+## usersPage.py - show selinux mappings
+## Copyright (C) 2006 Red Hat, Inc.
+
+## This program is free software; you can redistribute it and/or modify
+## it under the terms of the GNU General Public License as published by
+## the Free Software Foundation; either version 2 of the License, or
+## (at your option) any later version.
+
+## This program is distributed in the hope that it will be useful,
+## but WITHOUT ANY WARRANTY; without even the implied warranty of
+## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+## GNU General Public License for more details.
+
+## You should have received a copy of the GNU General Public License
+## along with this program; if not, write to the Free Software
+## Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+## Author: Dan Walsh
+import string
+import gtk
+import gtk.glade
+import os
+import libxml2
+import gobject
+import sys
+import seobject
+from semanagePage import *;
+
+##
+## I18N
+## 
+PROGNAME="policycoreutils"
+import gettext
+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
+gettext.textdomain(PROGNAME)
+try:
+    gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
+except IOError:
+    import __builtin__
+    __builtin__.__dict__['_'] = unicode
+
+class usersPage(semanagePage):
+    def __init__(self, xml):
+        semanagePage.__init__(self, xml, "users", "SELinux User")
+        self.store = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
+        self.view.set_model(self.store)
+        self.store.set_sort_column_id(0, gtk.SORT_ASCENDING)        
+
+        col = gtk.TreeViewColumn(_("SELinux\nUser"), gtk.CellRendererText(), text = 0)
+        col.set_sort_column_id(0)
+        col.set_resizable(True)
+        self.view.append_column(col)
+
+        col = gtk.TreeViewColumn(_("Labeling\nPrefix"), gtk.CellRendererText(), text = 1)
+        col.set_resizable(True)
+        self.view.append_column(col)
+        col = gtk.TreeViewColumn(_("MLS/\nMCS Level"), gtk.CellRendererText(), text = 2)
+        col.set_resizable(True)
+        self.view.append_column(col)
+        col = gtk.TreeViewColumn(_("MLS/\nMCS Range"), gtk.CellRendererText(), text = 3)
+        col.set_resizable(True)
+        self.view.append_column(col)
+
+        col = gtk.TreeViewColumn(_("SELinux Roles"), gtk.CellRendererText(), text = 4)
+        col.set_resizable(True)
+        self.view.append_column(col)
+
+        self.load()
+        self.selinuxUserEntry = xml.get_widget("selinuxUserEntry")
+        self.labelPrefixEntry = xml.get_widget("labelPrefixEntry")
+        self.mlsLevelEntry = xml.get_widget("mlsLevelEntry")
+        self.mlsRangeEntry = xml.get_widget("mlsRangeEntry")
+        self.selinuxRolesEntry = xml.get_widget("selinuxRolesEntry")
+
+    def load(self):
+        self.user = seobject.seluserRecords()
+        dict = self.user.get_all()
+        keys = dict.keys()
+        keys.sort()
+        self.store.clear()
+        for k in keys:
+            iter = self.store.append()
+            self.store.set_value(iter, 0, k)
+            self.store.set_value(iter, 1, dict[k][0])
+            self.store.set_value(iter, 2, seobject.translate(dict[k][1]))
+            self.store.set_value(iter, 3, seobject.translate(dict[k][2]))
+            self.store.set_value(iter, 4, dict[k][3])
+        self.view.get_selection().select_path ((0,))
+
+    def delete(self):
+        if semanagePage.delete(self) == gtk.RESPONSE_NO:
+                return None
+
+    def dialogInit(self):
+        store, iter = self.view.get_selection().get_selected()
+        self.selinuxUserEntry.set_text(store.get_value(iter, 0))
+        self.selinuxUserEntry.set_sensitive(False)
+        self.labelPrefixEntry.set_text(store.get_value(iter, 1))
+        self.mlsLevelEntry.set_text(store.get_value(iter, 2))
+        self.mlsRangeEntry.set_text(store.get_value(iter, 3))
+        self.selinuxRolesEntry.set_text(store.get_value(iter, 4))
+        protocol=store.get_value(iter, 2)
+        
+    def dialogClear(self):
+        self.selinuxUserEntry.set_text("")
+        self.selinuxUserEntry.set_sensitive(True)
+        self.labelPrefixEntry.set_text("")
+        self.mlsLevelEntry.set_text("s0")
+        self.mlsRangeEntry.set_text("s0")
+        self.selinuxRolesEntry.set_text("")
+        
+    def add(self):
+        user = self.selinuxUserEntry.get_text()
+        prefix = self.labelPrefixEntry.get_text()
+        level = self.mlsLevelEntry.get_text()
+        range = self.mlsRangeEntry.get_text()
+        roles = self.selinuxRolesEntry.get_text()
+
+        self.user.add(user, roles.split(), level, range, prefix)
+        iter = self.store.append()
+        self.store.set_value(iter, 0, user)
+        self.store.set_value(iter, 1, prefix)
+        self.store.set_value(iter, 2, level)
+        self.store.set_value(iter, 3, range)
+        self.store.set_value(iter, 4, roles)
+        
+    def modify(self):
+        user = self.selinuxUserEntry.get_text()
+        prefix = self.labelPrefixEntry.get_text()
+        level = self.mlsLevelEntry.get_text()
+        range = self.mlsRangeEntry.get_text()
+        roles = self.selinuxRolesEntry.get_text()
+
+        self.user.modify(user, roles.split(), level, range, prefix)
+        store, iter = self.view.get_selection().get_selected()
+        iter = self.store.append()
+        self.store.set_value(iter, 0, user)
+        self.store.set_value(iter, 1, prefix)
+        self.store.set_value(iter, 2, level)
+        self.store.set_value(iter, 3, range)
+        self.store.set_value(iter, 4, roles)
+
+    def delete(self):
+        store, iter = self.view.get_selection().get_selected()
+        try:
+            user=store.get_value(iter, 0)
+            if user == "root" or user == "user_u":
+                raise ValueError(_("SELinux user '%s' is required") % user)
+                
+            self.user.delete(user)
+            store.remove(iter)
+            self.view.get_selection().select_path ((0,))
+        except ValueError, e:
+            self.error(e.args[0])
+


Index: .cvsignore
===================================================================
RCS file: /cvs/dist/rpms/policycoreutils/devel/.cvsignore,v
retrieving revision 1.138
retrieving revision 1.139
diff -u -r1.138 -r1.139
--- .cvsignore	15 Feb 2007 20:27:16 -0000	1.138
+++ .cvsignore	20 Feb 2007 14:57:59 -0000	1.139
@@ -132,3 +132,4 @@
 policycoreutils-2.0.0.tgz
 policycoreutils-2.0.1.tgz
 sepolgen-1.0.0.tgz
+policycoreutils-2.0.2.tgz

policycoreutils-rhat.patch:
 Makefile                     |    2 -
 newrole/newrole.c            |    8 +++---
 restorecond/restorecond.c    |   12 +++++----
 restorecond/restorecond.conf |    2 +
 scripts/chcat                |   55 +++++++++++++++++++++++++++++++++++--------
 scripts/chcat.8              |   19 +++++++-------
 scripts/fixfiles.8           |    2 -
 semanage/seobject.py         |   12 ++++++---
 8 files changed, 78 insertions(+), 34 deletions(-)

View full diff with command:
/usr/bin/cvs -f diff  -kk -u -N -r 1.284 -r 1.285 policycoreutils-rhat.patch
Index: policycoreutils-rhat.patch
===================================================================
RCS file: /cvs/dist/rpms/policycoreutils/devel/policycoreutils-rhat.patch,v
retrieving revision 1.284
retrieving revision 1.285
diff -u -r1.284 -r1.285
--- policycoreutils-rhat.patch	15 Feb 2007 20:27:16 -0000	1.284
+++ policycoreutils-rhat.patch	20 Feb 2007 14:57:59 -0000	1.285
@@ -1,4858 +1,15 @@
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/gui/booleansPage.py policycoreutils-2.0.1/gui/booleansPage.py
---- nsapolicycoreutils/gui/booleansPage.py	1969-12-31 19:00:00.000000000 -0500
-+++ policycoreutils-2.0.1/gui/booleansPage.py	2007-02-15 15:01:06.000000000 -0500
-@@ -0,0 +1,199 @@
-+#
-+# booleansPage.py - GUI for Booleans page in system-config-securitylevel
-+#
-+# Brent Fox <bfox at redhat.com>
-+# Dan Walsh <dwalsh at redhat.com>
-+#
-+# Copyright 2006 Red Hat, Inc.
-+#
-+# This program is free software; you can redistribute it and/or modify
-+# it under the terms of the GNU General Public License as published by
-+# the Free Software Foundation; either version 2 of the License, or
-+# (at your option) any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-+# GNU General Public License for more details.
-+#
-+# You should have received a copy of the GNU General Public License
-+# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+#
-+import string
-+import gtk
-+import gtk.glade
-+import os
-+import libxml2
-+import gobject
-+import sys
-+import tempfile
-+
-+INSTALLPATH='/usr/share/system-config-selinux'
-+sys.path.append(INSTALLPATH)
-+
-+from Conf import *
-+import commands
-+ENFORCING=0
-+PERMISSIVE=1
-+DISABLED=2
-+
-+##
-+## I18N
-+## 
-+PROGNAME="system-config-selinux"
-+
-+import gettext
-+gettext.bindtextdomain(PROGNAME, "/usr/share/locale")
-+gettext.textdomain(PROGNAME)
-+try:
-+    gettext.install(PROGNAME, localedir="/usr/share/locale", unicode=1)
-+except IOError:
-+    import __builtin__
-+    __builtin__.__dict__['_'] = unicode
-+
-+class Translation:
-+    def __init__(self):
-+        self.translation={}
-+        fd=open(INSTALLPATH + "/selinux.tbl","r")
-+        lines=fd.readlines()
-+        fd.close()
-+        for i in lines:
-+            try:
-+                line=i.strip().split("_(\"")
-+                key=line[0].strip()
-+                category=line[1].split("\"")[0]
-+                value=line[2].split("\"")[0]
-+                self.translation[key]=(category,value)
-+            except:
-+                continue
-+
-+    def get_category(self,key):
-+        try:
-+            return _(self.translation[key][0])
-+        except:
-+            return _("Other")
-+
-+    def get_value(self,key):
-+        try:
-+            return _(self.translation[key][1])
-+        except:
-+            return key
-+
-+class Modifier:
-+    def __init__(self,name, on, save):
-+        self.on=on
-+        self.name=name
-+        self.save=save
-+
-+    def set(self,value):
-+        self.on=value
-+        self.save=True
-+
-+    def isOn(self):
-+        return self.on
-+
-+class Boolean(Modifier):
-+    def __init__(self,name, val, save=False):
-+        Modifier.__init__(self,name, val, save)
-+
-+class Modifiers:
-+    def __init__(self,store):
-+        self.modifiers={}
-+        self.translation=Translation()
-+        self.store=store
-+        self.store.clear()
-+
-+    def add(self,name,val):
-+        if name == "targeted_policy":
-+            return
-+        category=self.translation.get_category(name)
-+        if not self.modifiers.has_key(category):
-+            self.modifiers[category]={}
-+            iter=self.store.append(None)
-+            self.modifiers[category]["iter"] = iter
-+            self.store.set_value(iter, 1, category)
-+            self.store.set_value(iter, 3, False)
-+
-+        self.modifiers[category][name]=val;
-+        iter=self.store.append(self.modifiers[category]["iter"])
-+        self.store.set_value(iter, 0, val.isOn())
-+        self.store.set_value(iter, 1, self.translation.get_value(name))
-+        self.store.set_value(iter, 2, name)
-+        self.store.set_value(iter, 3, True)
-+
-+    def set(self,name,val):
-+        category=self.translation.get_category(name)
-+        self.modifiers[category][name].set(val)
-+
-+    def isBoolean(self,name):
-+        c=self.translation.get_category(name)
-+        return isinstance(self.modifiers[c][name], Boolean)
-+
-+    def get_booleans(self):
-+        booleans={}
-+        for c in self.modifiers.keys():
-+            for n in self.modifiers[c].keys():
-+                if isinstance(self.modifiers[c][n], Boolean):
-+                    booleans[n]=self.modifiers[c][n]
-+        return booleans
-+
-+class booleansPage:
-+    def __init__(self, xml, doDebug=None):
-+        self.xml = xml
-+        self.types=[]
-+        self.selinuxsupport = True
-+        self.translation = Translation()
-+        self.typechanged = False
-+        self.doDebug = doDebug
-+
-+        # Bring in widgets from glade file.
-+        self.typeHBox = xml.get_widget("typeHBox")
-+        self.booleanSW = xml.get_widget("booleanSW")
-+        self.booleansView = xml.get_widget("booleansView")
-+        self.typeLabel = xml.get_widget("typeLabel")
-+        self.modifySeparator = xml.get_widget("modifySeparator")
-+
-+        listStore = gtk.ListStore(gobject.TYPE_STRING)
-+        cell = gtk.CellRendererText()
-+
-+        self.booleansStore = gtk.TreeStore(gobject.TYPE_BOOLEAN, gobject.TYPE_STRING, gobject.TYPE_PYOBJECT, gobject.TYPE_BOOLEAN)
-+        self.booleansStore.set_sort_column_id(1, gtk.SORT_ASCENDING)        
-+        self.booleansView.set_model(self.booleansStore)
-+
-+        checkbox = gtk.CellRendererToggle()
-+        checkbox.connect("toggled", self.boolean_toggled)
-+        col = gtk.TreeViewColumn('', checkbox, active = 0,visible=3)
-+        col.set_fixed_width(20)
-+        col.set_clickable(True)
-+        self.booleansView.append_column(col)
-+
-+        col = gtk.TreeViewColumn("", gtk.CellRendererText(), text=1)
-+        self.booleansView.append_column(col)
-+        self.refreshBooleans()
-+            
-+    def get_description(self):
-+        return _("Boolean")
-+
-+    def refreshBooleans(self):
-+        self.modifiers=Modifiers(self.booleansStore)
-+        booleansList=commands.getoutput("/usr/sbin/getsebool -a").split("\n")
-+        for i in booleansList:
-+            rec=i.split()
-+            name=rec[0]
-+            if rec[2]=="on" or rec[2]=="active":
-+                on=1
-+            else:
-+                on=0
-+            self.modifiers.add(name,Boolean(name,on))
[...4553 lines suppressed...]
-+        col = gtk.TreeViewColumn(_("MLS/\nMCS Level"), gtk.CellRendererText(), text = 2)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+        col = gtk.TreeViewColumn(_("MLS/\nMCS Range"), gtk.CellRendererText(), text = 3)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+
-+        col = gtk.TreeViewColumn(_("SELinux Roles"), gtk.CellRendererText(), text = 4)
-+        col.set_resizable(True)
-+        self.view.append_column(col)
-+
-+        self.load()
-+        self.selinuxUserEntry = xml.get_widget("selinuxUserEntry")
-+        self.labelPrefixEntry = xml.get_widget("labelPrefixEntry")
-+        self.mlsLevelEntry = xml.get_widget("mlsLevelEntry")
-+        self.mlsRangeEntry = xml.get_widget("mlsRangeEntry")
-+        self.selinuxRolesEntry = xml.get_widget("selinuxRolesEntry")
-+
-+    def load(self):
-+        self.user = seobject.seluserRecords()
-+        dict = self.user.get_all()
-+        keys = dict.keys()
-+        keys.sort()
-+        self.store.clear()
-+        for k in keys:
-+            iter = self.store.append()
-+            self.store.set_value(iter, 0, k)
-+            self.store.set_value(iter, 1, dict[k][0])
-+            self.store.set_value(iter, 2, seobject.translate(dict[k][1]))
-+            self.store.set_value(iter, 3, seobject.translate(dict[k][2]))
-+            self.store.set_value(iter, 4, dict[k][3])
-+        self.view.get_selection().select_path ((0,))
-+
-+    def delete(self):
-+        if semanagePage.delete(self) == gtk.RESPONSE_NO:
-+                return None
-+
-+    def dialogInit(self):
-+        store, iter = self.view.get_selection().get_selected()
-+        self.selinuxUserEntry.set_text(store.get_value(iter, 0))
-+        self.selinuxUserEntry.set_sensitive(False)
-+        self.labelPrefixEntry.set_text(store.get_value(iter, 1))
-+        self.mlsLevelEntry.set_text(store.get_value(iter, 2))
-+        self.mlsRangeEntry.set_text(store.get_value(iter, 3))
-+        self.selinuxRolesEntry.set_text(store.get_value(iter, 4))
-+        protocol=store.get_value(iter, 2)
-+        
-+    def dialogClear(self):
-+        self.selinuxUserEntry.set_text("")
-+        self.selinuxUserEntry.set_sensitive(True)
-+        self.labelPrefixEntry.set_text("")
-+        self.mlsLevelEntry.set_text("s0")
-+        self.mlsRangeEntry.set_text("s0")
-+        self.selinuxRolesEntry.set_text("")
-+        
-+    def add(self):
-+        user = self.selinuxUserEntry.get_text()
-+        prefix = self.labelPrefixEntry.get_text()
-+        level = self.mlsLevelEntry.get_text()
-+        range = self.mlsRangeEntry.get_text()
-+        roles = self.selinuxRolesEntry.get_text()
-+
-+        self.user.add(user, roles.split(), level, range, prefix)
-+        iter = self.store.append()
-+        self.store.set_value(iter, 0, user)
-+        self.store.set_value(iter, 1, prefix)
-+        self.store.set_value(iter, 2, level)
-+        self.store.set_value(iter, 3, range)
-+        self.store.set_value(iter, 4, roles)
-+        
-+    def modify(self):
-+        user = self.selinuxUserEntry.get_text()
-+        prefix = self.labelPrefixEntry.get_text()
-+        level = self.mlsLevelEntry.get_text()
-+        range = self.mlsRangeEntry.get_text()
-+        roles = self.selinuxRolesEntry.get_text()
-+
-+        self.user.modify(user, roles.split(), level, range, prefix)
-+        store, iter = self.view.get_selection().get_selected()
-+        iter = self.store.append()
-+        self.store.set_value(iter, 0, user)
-+        self.store.set_value(iter, 1, prefix)
-+        self.store.set_value(iter, 2, level)
-+        self.store.set_value(iter, 3, range)
-+        self.store.set_value(iter, 4, roles)
-+
-+    def delete(self):
-+        store, iter = self.view.get_selection().get_selected()
-+        try:
-+            user=store.get_value(iter, 0)
-+            if user == "root" or user == "user_u":
-+                raise ValueError(_("SELinux user '%s' is required") % user)
-+                
-+            self.user.delete(user)
-+            store.remove(iter)
-+            self.view.get_selection().select_path ((0,))
-+        except ValueError, e:
-+            self.error(e.args[0])
-+
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/Makefile policycoreutils-2.0.1/Makefile
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/Makefile policycoreutils-2.0.1/Makefile
 --- nsapolicycoreutils/Makefile	2006-11-16 17:15:00.000000000 -0500
-+++ policycoreutils-2.0.1/Makefile	2007-02-15 15:01:06.000000000 -0500
++++ policycoreutils-2.0.1/Makefile	2007-02-15 15:16:09.000000000 -0500
 @@ -1,4 +1,4 @@
 -SUBDIRS=setfiles semanage load_policy newrole run_init restorecon restorecond secon audit2allow audit2why scripts sestatus semodule_package semodule semodule_link semodule_expand semodule_deps setsebool po
 +SUBDIRS=setfiles semanage load_policy newrole run_init restorecon restorecond secon audit2allow audit2why scripts sestatus semodule_package semodule semodule_link semodule_expand semodule_deps setsebool po gui
  
  all install relabel clean indent:
  	@for subdir in $(SUBDIRS); do \
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/newrole/newrole.c policycoreutils-2.0.1/newrole/newrole.c
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/newrole/newrole.c policycoreutils-2.0.1/newrole/newrole.c
 --- nsapolicycoreutils/newrole/newrole.c	2007-01-24 10:03:59.000000000 -0500
-+++ policycoreutils-2.0.1/newrole/newrole.c	2007-02-15 15:01:06.000000000 -0500
++++ policycoreutils-2.0.1/newrole/newrole.c	2007-02-15 15:16:09.000000000 -0500
 @@ -640,7 +640,7 @@
  	}
  
@@ -4879,9 +36,9 @@
  	if (fd != 2)
  		goto err_close_pam;
  
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/restorecond/restorecond.c policycoreutils-2.0.1/restorecond/restorecond.c
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/restorecond/restorecond.c policycoreutils-2.0.1/restorecond/restorecond.c
 --- nsapolicycoreutils/restorecond/restorecond.c	2006-11-16 17:14:28.000000000 -0500
-+++ policycoreutils-2.0.1/restorecond/restorecond.c	2007-02-15 15:01:06.000000000 -0500
++++ policycoreutils-2.0.1/restorecond/restorecond.c	2007-02-15 15:16:09.000000000 -0500
 @@ -210,9 +210,10 @@
  			}
  
@@ -4908,9 +65,9 @@
  	}
  	free(scontext);
  	close(fd);
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/restorecond/restorecond.conf policycoreutils-2.0.1/restorecond/restorecond.conf
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/restorecond/restorecond.conf policycoreutils-2.0.1/restorecond/restorecond.conf
 --- nsapolicycoreutils/restorecond/restorecond.conf	2006-11-20 12:19:55.000000000 -0500
-+++ policycoreutils-2.0.1/restorecond/restorecond.conf	2007-02-15 15:01:06.000000000 -0500
++++ policycoreutils-2.0.1/restorecond/restorecond.conf	2007-02-15 15:16:09.000000000 -0500
 @@ -1,7 +1,9 @@
  /etc/resolv.conf
 +/etc/localtime
@@ -4921,9 +78,9 @@
  /var/log/wtmp
  ~/public_html
  ~/.mozilla/plugins/libflashplayer.so
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/scripts/chcat policycoreutils-2.0.1/scripts/chcat
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/scripts/chcat policycoreutils-2.0.1/scripts/chcat
 --- nsapolicycoreutils/scripts/chcat	2006-11-16 17:14:27.000000000 -0500
-+++ policycoreutils-2.0.1/scripts/chcat	2007-02-15 15:01:06.000000000 -0500
++++ policycoreutils-2.0.1/scripts/chcat	2007-02-15 15:16:09.000000000 -0500
 @@ -25,11 +25,22 @@
  import commands, sys, os, pwd, string, getopt, selinux
  import seobject
@@ -5025,9 +182,9 @@
      except ValueError, e:
          usage()
  
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/scripts/chcat.8 policycoreutils-2.0.1/scripts/chcat.8
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/scripts/chcat.8 policycoreutils-2.0.1/scripts/chcat.8
 --- nsapolicycoreutils/scripts/chcat.8	2007-01-17 11:11:34.000000000 -0500
-+++ policycoreutils-2.0.1/scripts/chcat.8	2007-02-15 15:01:06.000000000 -0500
++++ policycoreutils-2.0.1/scripts/chcat.8	2007-02-15 15:16:09.000000000 -0500
 @@ -3,30 +3,31 @@
  chcat \- change file SELinux security category
  .SH SYNOPSIS
@@ -5069,9 +226,9 @@
  .PP
  .B
  Note:
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/scripts/fixfiles.8 policycoreutils-2.0.1/scripts/fixfiles.8
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/scripts/fixfiles.8 policycoreutils-2.0.1/scripts/fixfiles.8
 --- nsapolicycoreutils/scripts/fixfiles.8	2007-01-17 11:11:34.000000000 -0500
-+++ policycoreutils-2.0.1/scripts/fixfiles.8	2007-02-15 15:01:06.000000000 -0500
++++ policycoreutils-2.0.1/scripts/fixfiles.8	2007-02-15 15:16:09.000000000 -0500
 @@ -54,7 +54,7 @@
  change any incorrect file context labels.
  .TP 
@@ -5081,9 +238,18 @@
  .TP 
  .B verify
  List out files with incorrect file context labels, but do not change them.
-diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=po -N -u -r nsapolicycoreutils/semanage/seobject.py policycoreutils-2.0.1/semanage/seobject.py
---- nsapolicycoreutils/semanage/seobject.py	2007-01-17 11:11:34.000000000 -0500
-+++ policycoreutils-2.0.1/semanage/seobject.py	2007-02-15 15:01:06.000000000 -0500
+diff --exclude-from=exclude --exclude=sepolgen-1.0.0 --exclude=gui --exclude=po -N -u -r nsapolicycoreutils/semanage/seobject.py policycoreutils-2.0.1/semanage/seobject.py
+--- nsapolicycoreutils/semanage/seobject.py	2007-02-20 08:43:10.000000000 -0500
++++ policycoreutils-2.0.1/semanage/seobject.py	2007-02-15 15:16:09.000000000 -0500
+@@ -139,7 +139,7 @@
+ 			translations = fd.readlines()
+ 			fd.close()
+ 		except IOError, e:
+-			raise ValueError(_("Unable to open %s: translations not supported on non-MLS machines") % (self.filename) )
++			raise ValueError(_("Unable to open %s: translations not supported on non-MLS machines") % (self.filename, e) )			
+ 			
+ 		self.ddict = {}
+ 		self.comments = []
 @@ -209,7 +209,8 @@
  		os.write(fd, self.out())
  		os.close(fd)


Index: policycoreutils.spec
===================================================================
RCS file: /cvs/dist/rpms/policycoreutils/devel/policycoreutils.spec,v
retrieving revision 1.370
retrieving revision 1.371
diff -u -r1.370 -r1.371
--- policycoreutils.spec	15 Feb 2007 20:27:17 -0000	1.370
+++ policycoreutils.spec	20 Feb 2007 14:57:59 -0000	1.371
@@ -5,8 +5,8 @@
 %define sepolgenver 1.0.0
 Summary: SELinux policy core utilities.
 Name: policycoreutils
-Version: 2.0.1
-Release: 2%{?dist}
+Version: 2.0.2
+Release: 1%{?dist}
 License: GPL
 Group: System Environment/Base
 Source: http://www.nsa.gov/selinux/archives/policycoreutils-%{version}.tgz
@@ -18,12 +18,14 @@
 Patch: policycoreutils-rhat.patch
 Patch1: policycoreutils-po.patch
 Patch2: policycoreutils-sepolgen.patch
+Patch3: policycoreutils-gui.patch
 
 BuildRequires: pam-devel libsepol-devel >= %{libsepolver} libsemanage-devel >= %{libsemanagever} libselinux-devel >= %{libselinuxver}  libcap-devel audit-libs-devel gettext
 Requires: /bin/mount /bin/egrep /bin/awk /usr/bin/diff /bin/rpm
 Requires: libsepol >= %{libsepolver} libsemanage >= %{libsemanagever} libselinux-python coreutils audit-libs-python >=  %{libauditver} 
 Requires(post): /sbin/service /sbin/chkconfig 
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Requires: %{name}-plugins
 
 %description
 Security-enhanced Linux is a feature of the Linux® kernel and a number
@@ -47,6 +49,7 @@
 %patch -p1 -b .rhat
 %patch1 -p1 -b .rhatpo
 %patch2 -p1 -b .sepolgen
+%patch3 -p1 -b .gui
 
 %build
 make LSPP_PRIV=y LIBDIR="%{_libdir}" CFLAGS="%{optflags} -fPIE" LDFLAGS="-pie -Wl,-z,relro" all 
@@ -179,6 +182,11 @@
 /usr/bin/sepolgen-ifgen  > /dev/null
 
 %changelog
+* Tue Feb 20 2007 Dan Walsh <dwalsh at redhat.com> 2.0.2-1
+- Update to upstream
+	* Merged seobject exception handler fix from Caleb Case.
+	* Merged setfiles memory leak patch from Todd Miller.
+
 * Thu Feb 15 2007 Dan Walsh <dwalsh at redhat.com> 2.0.1-2
 - Cleanup man pages syntax
 - Add sepolgen


Index: sources
===================================================================
RCS file: /cvs/dist/rpms/policycoreutils/devel/sources,v
retrieving revision 1.143
retrieving revision 1.144
diff -u -r1.143 -r1.144
--- sources	16 Feb 2007 13:55:14 -0000	1.143
+++ sources	20 Feb 2007 14:57:59 -0000	1.144
@@ -1,2 +1,2 @@
-f642af08f24e04a93269cb295050ef59  policycoreutils-2.0.1.tgz
 42087696c0b3926244ccfe637ee8c89b  sepolgen-1.0.0.tgz
+64bd1845e6457d0d238338a6a0292dfc  policycoreutils-2.0.2.tgz




More information about the fedora-cvs-commits mailing list