mirror of
https://gitlab.com/apparmor/apparmor
synced 2025-08-30 22:05:27 +00:00
move splitting flags into profile_storage split_flags() function
... and change change_profile_flags() to use it instead of doing it itsself Also add some tests for split_flags()
This commit is contained in:
@@ -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,
|
RE_PROFILE_UNIX, RE_RULE_HAS_COMMA, RE_HAS_COMMENT_SPLIT,
|
||||||
strip_quotes, parse_profile_start_line, re_match_include )
|
strip_quotes, parse_profile_start_line, re_match_include )
|
||||||
|
|
||||||
from apparmor.profile_storage import (ProfileStorage, ruletypes, write_alias,
|
from apparmor.profile_storage import (ProfileStorage, split_flags, ruletypes, write_alias,
|
||||||
write_includes, write_list_vars )
|
write_includes, write_list_vars )
|
||||||
|
|
||||||
import apparmor.rules as aarules
|
import apparmor.rules as aarules
|
||||||
@@ -625,17 +625,8 @@ def get_profile_flags(filename, program):
|
|||||||
|
|
||||||
def change_profile_flags(filename, program, flag, set_flag):
|
def change_profile_flags(filename, program, flag, set_flag):
|
||||||
old_flags = get_profile_flags(filename, program)
|
old_flags = get_profile_flags(filename, program)
|
||||||
newflags = []
|
|
||||||
if old_flags:
|
|
||||||
# Flags maybe white-space and/or , separated
|
|
||||||
old_flags = old_flags.split(',')
|
|
||||||
|
|
||||||
if not isinstance(old_flags, str):
|
newflags = split_flags(old_flags)
|
||||||
for i in old_flags:
|
|
||||||
newflags += i.split()
|
|
||||||
else:
|
|
||||||
newflags = old_flags.split()
|
|
||||||
#newflags = [lambda x:x.strip(), oldflags]
|
|
||||||
|
|
||||||
if set_flag:
|
if set_flag:
|
||||||
if flag not in newflags:
|
if flag not in newflags:
|
||||||
|
@@ -159,6 +159,17 @@ class ProfileStorage:
|
|||||||
return data
|
return data
|
||||||
|
|
||||||
|
|
||||||
|
def split_flags(flags):
|
||||||
|
'''split the flags given as string into a sorted, de-duplicated list'''
|
||||||
|
|
||||||
|
if flags is None:
|
||||||
|
flags = ''
|
||||||
|
|
||||||
|
# Flags may be whitespace and/or comma separated
|
||||||
|
flags_list = flags.replace(',', ' ').split()
|
||||||
|
# sort and remove duplicates
|
||||||
|
return sorted(set(flags_list))
|
||||||
|
|
||||||
def set_allow_str(allow):
|
def set_allow_str(allow):
|
||||||
if allow == 'deny':
|
if allow == 'deny':
|
||||||
return 'deny '
|
return 'deny '
|
||||||
|
@@ -13,7 +13,7 @@ import unittest
|
|||||||
from common_test import AATest, setup_all_loops
|
from common_test import AATest, setup_all_loops
|
||||||
|
|
||||||
from apparmor.common import AppArmorBug
|
from apparmor.common import AppArmorBug
|
||||||
from apparmor.profile_storage import ProfileStorage, var_transform
|
from apparmor.profile_storage import ProfileStorage, split_flags, var_transform
|
||||||
|
|
||||||
class TestUnknownKey(AATest):
|
class TestUnknownKey(AATest):
|
||||||
def AASetup(self):
|
def AASetup(self):
|
||||||
@@ -35,6 +35,22 @@ class TestUnknownKey(AATest):
|
|||||||
with self.assertRaises(AppArmorBug):
|
with self.assertRaises(AppArmorBug):
|
||||||
self.storage['foo'] = 'bar'
|
self.storage['foo'] = 'bar'
|
||||||
|
|
||||||
|
class AaTest_split_flags(AATest):
|
||||||
|
tests = [
|
||||||
|
(None , [] ),
|
||||||
|
('' , [] ),
|
||||||
|
(' ' , [] ),
|
||||||
|
(' , ' , [] ),
|
||||||
|
('complain' , ['complain'] ),
|
||||||
|
(' complain attach_disconnected' , ['attach_disconnected', 'complain'] ),
|
||||||
|
(' complain , attach_disconnected' , ['attach_disconnected', 'complain'] ),
|
||||||
|
(' complain , , audit , , ' , ['audit', 'complain'] ),
|
||||||
|
]
|
||||||
|
|
||||||
|
def _run_test(self, params, expected):
|
||||||
|
split = split_flags(params)
|
||||||
|
self.assertEqual(split, expected)
|
||||||
|
|
||||||
class AaTest_var_transform(AATest):
|
class AaTest_var_transform(AATest):
|
||||||
tests = [
|
tests = [
|
||||||
(['foo', ''], '"" foo' ),
|
(['foo', ''], '"" foo' ),
|
||||||
|
Reference in New Issue
Block a user