diff --git a/utils/apparmor/aa.py b/utils/apparmor/aa.py index 90336ec14..83dd72f25 100644 --- a/utils/apparmor/aa.py +++ b/utils/apparmor/aa.py @@ -2627,7 +2627,7 @@ RE_PROFILE_HAT_DEF = re.compile('^\s*\^(\"??.+?\"??)\s+((flags=)?\((.+)\)\s+)*\{ RE_NETWORK_FAMILY_TYPE = re.compile('\s+(\S+)\s+(\S+)\s*,$') RE_NETWORK_FAMILY = re.compile('\s+(\S+)\s*,$') RE_PROFILE_DBUS = re.compile('^\s*(audit\s+)?(allow\s+|deny\s+)?(dbus\s*,|dbus\s+[^#]*\s*,)\s*(#.*)?$') -RE_PROFILE_MOUNT = re.compile('^\s*(audit\s+)?(allow\s+|deny\s+)?((mount|remount|umount)(\s+[^#]*)?\s*,)\s*(#.*)?$') +RE_PROFILE_MOUNT = re.compile('^\s*(audit\s+)?(allow\s+|deny\s+)?((mount|remount|umount|unmount)(\s+[^#]*)?\s*,)\s*(#.*)?$') RE_PROFILE_SIGNAL = re.compile('^\s*(audit\s+)?(allow\s+|deny\s+)?(signal\s*,|signal\s+[^#]*\s*,)\s*(#.*)?$') RE_PROFILE_PTRACE = re.compile('^\s*(audit\s+)?(allow\s+|deny\s+)?(ptrace\s*,|ptrace\s+[^#]*\s*,)\s*(#.*)?$') RE_PROFILE_PIVOT_ROOT = re.compile('^\s*(audit\s+)?(allow\s+|deny\s+)?(pivot_root\s*,|pivot_root\s+[^#]*\s*,)\s*(#.*)?$') diff --git a/utils/test/test-mount_parse.py b/utils/test/test-mount_parse.py index 12fa65c62..d750bacdf 100644 --- a/utils/test/test-mount_parse.py +++ b/utils/test/test-mount_parse.py @@ -66,5 +66,17 @@ class AAParseUmountTest(unittest.TestCase): self.assertEqual(rule, mount.serialize(), 'mount object returned "%s", expected "%s"' % (mount.serialize(), rule)) + def test_parse_plain_unmount_rule(self): + rule = 'unmount,' + mount = aa.parse_mount_rule(rule) + self.assertEqual(rule, mount.serialize(), + 'mount object returned "%s", expected "%s"' % (mount.serialize(), rule)) + + def test_parse_unmount_with_mount_point(self): + rule = 'unmount /mnt/external,' + mount = aa.parse_mount_rule(rule) + self.assertEqual(rule, mount.serialize(), + 'mount object returned "%s", expected "%s"' % (mount.serialize(), rule)) + if __name__ == '__main__': unittest.main() diff --git a/utils/test/test-regex_matches.py b/utils/test/test-regex_matches.py index 8b0b0bcfc..5c4df5685 100644 --- a/utils/test/test-regex_matches.py +++ b/utils/test/test-regex_matches.py @@ -249,6 +249,8 @@ class AARegexMount(unittest.TestCase): (' audit mount,', ('audit', None, 'mount,', 'mount', None, None)), (' umount,', (None, None, 'umount,', 'umount', None, None)), (' audit umount,', ('audit', None, 'umount,', 'umount', None, None)), + (' unmount,', (None, None, 'unmount,', 'unmount', None, None)), + (' audit unmount,', ('audit', None, 'unmount,', 'unmount', None, None)), (' remount,', (None, None, 'remount,', 'remount', None, None)), (' deny remount,', (None, 'deny', 'remount,', 'remount', None, None)),