[apparmor] [patch 4/3] hide raw_rule within parse class method
Steve Beattie
steve at nxnw.org
Tue Dec 16 22:20:51 UTC 2014
On Tue, Dec 09, 2014 at 05:20:39PM +0100, Christian Boltz wrote:
> > I've updated the patch to add some comments to the base class about
> > what rule subclasses need to implement.
> >
> > Signed-off-by: Steve Beattie <steve at nxnw.org>
>
> > Index: b/utils/apparmor/rule/__init__.py
> > ===================================================================
> > --- a/utils/apparmor/rule/__init__.py
> > +++ b/utils/apparmor/rule/__init__.py
> ...
> > + # @abstractmethod FIXME - uncomment when python3 only
> > + def is_covered(self, other_rule, check_allow_deny=True,
> > check_audit=False):
> > + '''check if other_rule is covered by this rule object'''
> > + raise AppArmorBug("'%s' needs to
> > implement is_covered(), but didn't" % (str(cls)))
>
> You'll get an exception here, but not the one you expect - cls is not
> defined here ;-)
>
> > + # @abstractmethod FIXME - uncomment when python3 only
> > + def is_equal_localvars(self, other_rule):
> > + '''compare if rule-specific variables are equal'''
> > + raise AppArmorBug("'%s' needs to implement
> > is_equal_localvars(), but didn't" % (str(cls)))
>
> Same here - cls is undefined.
Gack, fixed.
> > Index: b/utils/apparmor/rule/capability.py
> > ===================================================================
> > --- a/utils/apparmor/rule/capability.py
> > +++ b/utils/apparmor/rule/capability.py
> ...
> > @@ -61,8 +60,8 @@ class CapabilityRule(BaseRule):
> > if len(cap.strip()) == 0:
> > raise AppArmorBug('Passed empty capability to
> > CapabilityRule: %s' % str(cap_list))
> >
> > - @staticmethod
> > - def parse(raw_rule):
> > + @classmethod
> > + def _parse(cls, raw_rule):
> > return parse_capability(raw_rule)
>
> parse_capability() is (IIRC) only called here - feel free to integrate
> it directly in _parse()
Yeah. I was of two minds as to whether to have it directly in the class
or not, which is why I had the code indented too deep in a prior
iteration of the patch. I've moved it into the class.
> > @@ -147,4 +144,4 @@ def parse_capability(raw_rule):
> >
> > return CapabilityRule(capability, audit=audit, deny=deny,
> > allow_keyword=allow_keyword,
> > - comment=comment, raw_rule=raw_rule)
> > + comment=comment)
>
> This change means you no longer set raw_rule. Please change this to
>
> rule = CapabilityRule(......)
> rule.raw_rule = raw_rule
> return rule
That gets set in the BaseRule.parse() class method. I had thought
you would prefer this coding style, such that subclasses wouldn't
need to bother setting the raw_rule.
> With these details fixed,
> Acked-by: Christian Boltz <apparmor at cboltz.de>
Thanks. All patches in the series are committed to trunk now.
--
Steve Beattie
<sbeattie at ubuntu.com>
http://NxNW.org/~steve/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20141216/83ed5099/attachment.pgp>
More information about the AppArmor
mailing list