* [PATCH] python/semanage: make seobject.py backward compatible
@ 2017-12-13 12:16 Petr Lautrbach
2017-12-18 20:48 ` Stephen Smalley
0 siblings, 1 reply; 2+ messages in thread
From: Petr Lautrbach @ 2017-12-13 12:16 UTC (permalink / raw)
To: selinux
Commit 985753f changed behavior of seobject class constructors. While
semanage itself was fixed, there are other tools like
system-config-selinux and chcat which depend on the original behavior.
This change make the constructors backward compatible.
Fixes: $ system-config-selinux
Traceback (most recent call last):
File "/usr/share/system-config-selinux/system-config-selinux.py", line 196, in <module>
app = childWindow()
File "/usr/share/system-config-selinux/system-config-selinux.py", line 100, in __init__
self.add_page(booleansPage.booleansPage(xml))
File "/usr/share/system-config-selinux/booleansPage.py", line 142, in __init__
self.load(self.filter)
File "/usr/share/system-config-selinux/booleansPage.py", line 212, in load
self.booleans = seobject.booleanRecords()
TypeError: __init__() missing 1 required positional argument: 'args'
Signed-off-by: Petr Lautrbach <plautrba@redhat.com>
---
python/semanage/seobject.py | 45 +++++++++++++++++++++++++--------------------
1 file changed, 25 insertions(+), 20 deletions(-)
diff --git a/python/semanage/seobject.py b/python/semanage/seobject.py
index 770745e4..b927b184 100644
--- a/python/semanage/seobject.py
+++ b/python/semanage/seobject.py
@@ -240,17 +240,22 @@ class semanageRecords:
store = None
args = None
- def __init__(self, args):
+ def __init__(self, args = None):
global handle
- self.args = args
- try:
- self.noreload = args.noreload
- except:
- self.noreload = False
- self.sh = self.get_handle(args.store)
+ if args:
+ # legacy code - args was store originally
+ if type(args) == str:
+ self.store = args
+ else:
+ self.args = args
+ self.noreload = getattr(args, "noreload", False)
+ if not self.store:
+ self.store = getattr(args, "store", "")
+
+ self.sh = self.get_handle(self.store)
rc, localstore = selinux.selinux_getpolicytype()
- if args.store == "" or args.store == localstore:
+ if self.store == "" or self.store == localstore:
self.mylog = logger()
else:
self.mylog = nulllogger()
@@ -331,7 +336,7 @@ class semanageRecords:
class moduleRecords(semanageRecords):
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def get_all(self):
@@ -443,7 +448,7 @@ class moduleRecords(semanageRecords):
class dontauditClass(semanageRecords):
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def toggle(self, dontaudit):
@@ -456,7 +461,7 @@ class dontauditClass(semanageRecords):
class permissiveRecords(semanageRecords):
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def get_all(self):
@@ -525,7 +530,7 @@ class permissiveRecords(semanageRecords):
class loginRecords(semanageRecords):
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
self.oldsename = None
self.oldserange = None
@@ -782,7 +787,7 @@ class loginRecords(semanageRecords):
class seluserRecords(semanageRecords):
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def get(self, name):
@@ -1045,7 +1050,7 @@ class portRecords(semanageRecords):
except RuntimeError:
valid_types = []
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def __genkey(self, port, proto):
@@ -1320,7 +1325,7 @@ class ibpkeyRecords(semanageRecords):
except:
valid_types = []
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def __genkey(self, pkey, subnet_prefix):
@@ -1573,7 +1578,7 @@ class ibendportRecords(semanageRecords):
except:
valid_types = []
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def __genkey(self, ibendport, ibdev_name):
@@ -1809,7 +1814,7 @@ class nodeRecords(semanageRecords):
except RuntimeError:
valid_types = []
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
self.protocol = ["ipv4", "ipv6"]
@@ -2045,7 +2050,7 @@ class nodeRecords(semanageRecords):
class interfaceRecords(semanageRecords):
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
def __add(self, interface, serange, ctype):
@@ -2242,7 +2247,7 @@ class fcontextRecords(semanageRecords):
except RuntimeError:
valid_types = []
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
self.equiv = {}
self.equiv_dist = {}
@@ -2631,7 +2636,7 @@ class fcontextRecords(semanageRecords):
class booleanRecords(semanageRecords):
- def __init__(self, args):
+ def __init__(self, args = None):
semanageRecords.__init__(self, args)
self.dict = {}
self.dict["TRUE"] = 1
--
2.15.1
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] python/semanage: make seobject.py backward compatible
2017-12-13 12:16 [PATCH] python/semanage: make seobject.py backward compatible Petr Lautrbach
@ 2017-12-18 20:48 ` Stephen Smalley
0 siblings, 0 replies; 2+ messages in thread
From: Stephen Smalley @ 2017-12-18 20:48 UTC (permalink / raw)
To: Petr Lautrbach, selinux
On Wed, 2017-12-13 at 13:16 +0100, Petr Lautrbach wrote:
> Commit 985753f changed behavior of seobject class constructors. While
> semanage itself was fixed, there are other tools like
> system-config-selinux and chcat which depend on the original
> behavior.
> This change make the constructors backward compatible.
>
> Fixes: $ system-config-selinux
> Traceback (most recent call last):
> File "/usr/share/system-config-selinux/system-config-selinux.py",
> line 196, in <module>
> app = childWindow()
> File "/usr/share/system-config-selinux/system-config-selinux.py",
> line 100, in __init__
> self.add_page(booleansPage.booleansPage(xml))
> File "/usr/share/system-config-selinux/booleansPage.py", line 142,
> in __init__
> self.load(self.filter)
> File "/usr/share/system-config-selinux/booleansPage.py", line 212,
> in load
> self.booleans = seobject.booleanRecords()
> TypeError: __init__() missing 1 required positional argument: 'args'
>
> Signed-off-by: Petr Lautrbach <plautrba@redhat.com>
Thanks, applied.
> ---
> python/semanage/seobject.py | 45 +++++++++++++++++++++++++--------
> ------------
> 1 file changed, 25 insertions(+), 20 deletions(-)
>
> diff --git a/python/semanage/seobject.py
> b/python/semanage/seobject.py
> index 770745e4..b927b184 100644
> --- a/python/semanage/seobject.py
> +++ b/python/semanage/seobject.py
> @@ -240,17 +240,22 @@ class semanageRecords:
> store = None
> args = None
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> global handle
> - self.args = args
> - try:
> - self.noreload = args.noreload
> - except:
> - self.noreload = False
> - self.sh = self.get_handle(args.store)
> + if args:
> + # legacy code - args was store originally
> + if type(args) == str:
> + self.store = args
> + else:
> + self.args = args
> + self.noreload = getattr(args, "noreload", False)
> + if not self.store:
> + self.store = getattr(args, "store", "")
> +
> + self.sh = self.get_handle(self.store)
>
> rc, localstore = selinux.selinux_getpolicytype()
> - if args.store == "" or args.store == localstore:
> + if self.store == "" or self.store == localstore:
> self.mylog = logger()
> else:
> self.mylog = nulllogger()
> @@ -331,7 +336,7 @@ class semanageRecords:
>
> class moduleRecords(semanageRecords):
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def get_all(self):
> @@ -443,7 +448,7 @@ class moduleRecords(semanageRecords):
>
> class dontauditClass(semanageRecords):
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def toggle(self, dontaudit):
> @@ -456,7 +461,7 @@ class dontauditClass(semanageRecords):
>
> class permissiveRecords(semanageRecords):
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def get_all(self):
> @@ -525,7 +530,7 @@ class permissiveRecords(semanageRecords):
>
> class loginRecords(semanageRecords):
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
> self.oldsename = None
> self.oldserange = None
> @@ -782,7 +787,7 @@ class loginRecords(semanageRecords):
>
> class seluserRecords(semanageRecords):
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def get(self, name):
> @@ -1045,7 +1050,7 @@ class portRecords(semanageRecords):
> except RuntimeError:
> valid_types = []
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def __genkey(self, port, proto):
> @@ -1320,7 +1325,7 @@ class ibpkeyRecords(semanageRecords):
> except:
> valid_types = []
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def __genkey(self, pkey, subnet_prefix):
> @@ -1573,7 +1578,7 @@ class ibendportRecords(semanageRecords):
> except:
> valid_types = []
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def __genkey(self, ibendport, ibdev_name):
> @@ -1809,7 +1814,7 @@ class nodeRecords(semanageRecords):
> except RuntimeError:
> valid_types = []
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
> self.protocol = ["ipv4", "ipv6"]
>
> @@ -2045,7 +2050,7 @@ class nodeRecords(semanageRecords):
>
> class interfaceRecords(semanageRecords):
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
>
> def __add(self, interface, serange, ctype):
> @@ -2242,7 +2247,7 @@ class fcontextRecords(semanageRecords):
> except RuntimeError:
> valid_types = []
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
> self.equiv = {}
> self.equiv_dist = {}
> @@ -2631,7 +2636,7 @@ class fcontextRecords(semanageRecords):
>
> class booleanRecords(semanageRecords):
>
> - def __init__(self, args):
> + def __init__(self, args = None):
> semanageRecords.__init__(self, args)
> self.dict = {}
> self.dict["TRUE"] = 1
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2017-12-18 20:48 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-13 12:16 [PATCH] python/semanage: make seobject.py backward compatible Petr Lautrbach
2017-12-18 20:48 ` Stephen Smalley
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.