[apparmor] [patch] Move check_and_split_list() to BaseRule

Seth Arnold seth.arnold at canonical.com
Fri Dec 4 01:40:15 UTC 2015


On Thu, Dec 03, 2015 at 10:12:06PM +0100, Christian Boltz wrote:
> Hello,
> 
> $subject. 
> 
> We'll need this function in more rule classes ;-)
> 

Acked-by: Seth Arnold <seth.arnold at canonical.com>

Thanks

> [ 25-move-check_and_split_list-to-baserule.diff ]
> 
> === modified file ./utils/apparmor/rule/__init__.py
> --- utils/apparmor/rule/__init__.py     2015-11-19 17:42:26.325879118 +0100
> +++ utils/apparmor/rule/__init__.py     2015-11-23 21:43:24.431985210 +0100
> @@ -343,6 +343,29 @@
>          raise NotImplementedError("get_glob_ext is not available for this rule type!")
>  
>  
> +def check_and_split_list(lst, allowed_keywords, all_obj, classname, keyword_name):
> +    '''check if lst is all_obj or contains only items listed in allowed_keywords'''
> +
> +    if lst == all_obj:
> +        return None, True, None
> +    elif type(lst) == str:
> +        result_list = {lst}
> +    elif (type(lst) == list or type(lst) == tuple) and len(lst) > 0:
> +        result_list = set(lst)
> +    else:
> +        raise AppArmorBug('Passed unknown %(type)s object to %(classname)s: %(unknown_object)s' %
> +                {'type': type(lst), 'classname': classname, 'unknown_object': str(lst)})
> +
> +    unknown_items = set()
> +    for item in result_list:
> +        if not item.strip():
> +            raise AppArmorBug('Passed empty %(keyword_name)s to %(classname)s' %
> +                    {'keyword_name': keyword_name, 'classname': classname})
> +        if item not in allowed_keywords:
> +            unknown_items.add(item)
> +
> +    return result_list, False, unknown_items
> +
>  def parse_comment(matches):
>      '''returns the comment (with a leading space) from the matches object'''
>      comment = ''
> === modified file ./utils/apparmor/rule/signal.py
> --- utils/apparmor/rule/signal.py       2015-11-19 18:17:06.944324889 +0100
> +++ utils/apparmor/rule/signal.py       2015-11-23 21:43:00.892169194 +0100
> @@ -17,7 +17,7 @@
>  from apparmor.aare import AARE
>  from apparmor.regex import RE_PROFILE_SIGNAL, RE_PROFILE_NAME
>  from apparmor.common import AppArmorBug, AppArmorException
> -from apparmor.rule import BaseRule, BaseRuleset, parse_modifiers, quote_if_needed
> +from apparmor.rule import BaseRule, BaseRuleset, check_and_split_list, parse_modifiers, quote_if_needed
>  
>  # setup module translations
>  from apparmor.translations import init_translation
> @@ -274,27 +274,3 @@
>          # XXX only remove one part, not all
>          return 'signal,'
>  
> -
> -def check_and_split_list(lst, allowed_keywords, all_obj, classname, keyword_name):
> -    '''check if lst is all_obj or contains only items listed in allowed_keywords'''
> -
> -    if lst == all_obj:
> -        return None, True, None
> -    elif type(lst) == str:
> -        result_list = {lst}
> -    elif (type(lst) == list or type(lst) == tuple) and len(lst) > 0:
> -        result_list = set(lst)
> -    else:
> -        raise AppArmorBug('Passed unknown %(type)s object to %(classname)s: %(unknown_object)s' %
> -                {'type': type(lst), 'classname': classname, 'unknown_object': str(lst)})
> -
> -    unknown_items = set()
> -    for item in result_list:
> -        if not item.strip():
> -            raise AppArmorBug('Passed empty %(keyword_name)s to %(classname)s' %
> -                    {'keyword_name': keyword_name, 'classname': classname})
> -        if item not in allowed_keywords:
> -            unknown_items.add(item)
> -
> -    return result_list, False, unknown_items
> -
> 
> 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 473 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/apparmor/attachments/20151203/c9d99526/attachment.pgp>


More information about the AppArmor mailing list