[apparmor] [patch] Adjust type(x) == str checks in the rule classes for py2
Tyler Hicks
tyhicks at canonical.com
Thu Dec 17 22:45:20 UTC 2015
On 2015-12-17 23:41:07, Christian Boltz wrote:
> Hello,
>
> Am Donnerstag, 17. Dezember 2015 schrieb Tyler Hicks:
> > On 2015-11-29 22:19:02, Christian Boltz wrote:
> > > python 3 uses only the 'str' type, while python 2 also uses
> > > 'unicode'. This patch adds a type_is_str() function to common.py -
> > > depending on the python version, it checks for both. This helper
> > > function is used to keep the complexity outside of the rule
> > > classes.
> > >
> > > The rule classes get adjusted to use type_is_str() instead of
> > > checking for type(x) == str, which means they support both python
> > > versions.>
> > >
> > > Finally, add test-common.py with some tests for type_is_str().
> > >
> > > References: https://bugs.launchpad.net/apparmor/+bug/1513880
> > >
> > > I propose this patch for trunk and 2.10 (except the rule/signal.py
> > > change because 2.10 doesn't contain SignalRule yet)
> >
> > It looks like you may have missed two other 'type(.*== str' patterns:
> >
> > utils/apparmor/aare.py:70: elif type(expression) == str:
> > utils/apparmor/rule/__init__.py:351: elif type(lst) == str:
> >
> > Please determine if they need the type_is_str() treatment, adjust the
> > patch as needed, and then commit to both branches with:
> >
> > Acked-by: Tyler Hicks <tyhicks at canonical.com>
>
> Actually there were two places in aare.py with a type check for str, and
> it's a good idea to allow unicode there.
>
> rule/__init__.py should not get unicode passed in - but OTOH, being
> consistent is worth more than writing "shouldn't happen" in a bugreport,
> so I switched to type_is_str() there also.
>
> For the records - the additional changes I included in the commit are
> (trunk only - 2.10 doesn't have that code):
Thanks - looks good to me!
Tyler
>
>
> === modified file 'utils/apparmor/aare.py'
> --- utils/apparmor/aare.py 2015-12-09 22:19:57 +0000
> +++ utils/apparmor/aare.py 2015-12-17 22:08:34 +0000
> @@ -14,7 +14,7 @@
>
> import re
>
> -from apparmor.common import convert_regexp, AppArmorBug, AppArmorException
> +from apparmor.common import convert_regexp, type_is_str, AppArmorBug, AppArmorException
>
> class AARE(object):
> '''AARE (AppArmor Regular Expression) wrapper class'''
> @@ -54,7 +54,7 @@
> expression = expression.orig_regex
> else:
> return self.is_equal(expression) # better safe than sorry
> - elif type(expression) != str:
> + elif not type_is_str(expression):
> raise AppArmorBug('AARE.match() called with unknown object: %s' % str(expression))
>
> if self._regex_compiled is None:
> @@ -67,7 +67,7 @@
>
> if type(expression) == AARE:
> return self.regex == expression.regex
> - elif type(expression) == str:
> + elif type_is_str(expression):
> return self.regex == expression
> else:
> raise AppArmorBug('AARE.is_equal() called with unknown object: %s' % str(expression))
>
> === modified file 'utils/apparmor/rule/__init__.py'
> --- utils/apparmor/rule/__init__.py 2015-12-04 11:02:33 +0000
> +++ utils/apparmor/rule/__init__.py 2015-12-17 22:09:47 +0000
> @@ -13,7 +13,7 @@
> #
> # ----------------------------------------------------------------------
>
> -from apparmor.common import AppArmorBug
> +from apparmor.common import AppArmorBug, type_is_str
>
> # setup module translations
> from apparmor.translations import init_translation
> @@ -348,7 +348,7 @@
>
> if lst == all_obj:
> return None, True, None
> - elif type(lst) == str:
> + elif type_is_str(lst):
> result_list = {lst}
> elif (type(lst) == list or type(lst) == tuple) and len(lst) > 0:
> result_list = set(lst)
>
>
>
>
> Regards,
>
> Christian Boltz
> --
> Der nächste DAU kommt bestimmt. Sie werden in den Kellern
> von AOL gezüchtet. [Dieter Bruegmann in dag°]
>
>
> --
> AppArmor mailing list
> AppArmor at lists.ubuntu.com
> Modify settings or unsubscribe at: https://lists.ubuntu.com/mailman/listinfo/apparmor
-------------- 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/20151217/45af26b1/attachment.pgp>
More information about the AppArmor
mailing list