diff --git a/utils/apparmor/aa.py b/utils/apparmor/aa.py index e845f9ef5..e45f7cfc5 100644 --- a/utils/apparmor/aa.py +++ b/utils/apparmor/aa.py @@ -49,7 +49,7 @@ from apparmor.regex import (RE_PROFILE_START, RE_PROFILE_END, RE_PROFILE_LINK, RE_PROFILE_UNIX, RE_RULE_HAS_COMMA, RE_HAS_COMMENT_SPLIT, strip_quotes, parse_profile_start_line, re_match_include ) -from apparmor.profile_storage import (ProfileStorage, add_or_remove_flag, split_flags, ruletypes, write_alias, +from apparmor.profile_storage import (ProfileStorage, add_or_remove_flag, ruletypes, write_alias, write_includes, write_list_vars ) import apparmor.rules as aarules @@ -626,9 +626,7 @@ def get_profile_flags(filename, program): def change_profile_flags(filename, program, flag, set_flag): old_flags = get_profile_flags(filename, program) - newflags = split_flags(old_flags) - - newflags = add_or_remove_flag(newflags, flag, set_flag) + newflags = add_or_remove_flag(old_flags, flag, set_flag) newflags = ','.join(newflags) diff --git a/utils/apparmor/profile_storage.py b/utils/apparmor/profile_storage.py index 145614135..3ee58db06 100644 --- a/utils/apparmor/profile_storage.py +++ b/utils/apparmor/profile_storage.py @@ -16,7 +16,7 @@ from apparmor.aamode import AA_LINK_SUBSET -from apparmor.common import AppArmorBug, AppArmorException, hasher +from apparmor.common import AppArmorBug, AppArmorException, hasher, type_is_str from apparmor.rule.capability import CapabilityRuleset from apparmor.rule.change_profile import ChangeProfileRuleset @@ -173,6 +173,9 @@ def split_flags(flags): def add_or_remove_flag(flags, flag_to_change, set_flag): '''add (if set_flag == True) or remove the given flag_to_change to flags''' + if type_is_str(flags) or flags is None: + flags = split_flags(flags) + if set_flag: if flag_to_change not in flags: flags.append(flag_to_change) diff --git a/utils/test/test-profile-storage.py b/utils/test/test-profile-storage.py index 7ff087de4..25ded02dd 100644 --- a/utils/test/test-profile-storage.py +++ b/utils/test/test-profile-storage.py @@ -46,6 +46,10 @@ class AaTest_add_or_remove_flag(AATest): ([ [], 'audit', False ], [] ), ([ ['complain'], 'audit', True ], ['audit', 'complain'] ), ([ ['complain'], 'audit', False ], ['complain'] ), + ([ '', 'audit', True ], ['audit'] ), + ([ None, 'audit', False ], [] ), + ([ 'complain', 'audit', True ], ['audit', 'complain'] ), + ([ ' complain ', 'audit', False ], ['complain'] ), ] def _run_test(self, params, expected):