[apparmor] [PATCH 1/2] Fix compilation failure of deny link rules
John Johansen
john.johansen at canonical.com
Thu Mar 19 10:52:13 UTC 2015
BugLink: http://bugs.launchpad.net/bugs/1433829
The apparmor_parser fails to compile deny rules with only link permissions.
Eg.
deny /f l,
deny l /f,
deny link /f -> /d,
Will all fail to compile with the following assert
apparmor_parser: aare_rules.cc:99: Node* convert_file_perms(int, uint32_t, uint32_t, bool): Assertion `perms != 0' failed.
Signed-off-by: John Johansen <john.johansen at canonical.com>
---
parser/parser_regex.c | 3 ++-
parser/tst/simple_tests/file/okay_audit_deny_link.sd | 9 +++++++++
parser/tst/simple_tests/file/okay_deny_link.sd | 9 +++++++++
3 files changed, 20 insertions(+), 1 deletion(-)
create mode 100644 parser/tst/simple_tests/file/okay_audit_deny_link.sd
create mode 100644 parser/tst/simple_tests/file/okay_deny_link.sd
diff --git a/parser/parser_regex.c b/parser/parser_regex.c
index 45f7f3e..699afac 100644
--- a/parser/parser_regex.c
+++ b/parser/parser_regex.c
@@ -523,7 +523,8 @@ static int process_dfa_entry(aare_rules *dfarules, struct cod_entry *entry)
* match. audit info for the link is carried on the second
* entry of the pair
*/
- if (entry->deny && (entry->mode & AA_LINK_BITS)) {
+ if (entry->deny && (entry->mode & AA_LINK_BITS) &&
+ (entry->mode & ~AA_LINK_BITS)) {
if (!dfarules->add_rule(tbuf.c_str(), entry->deny,
entry->mode & ~AA_LINK_BITS,
entry->audit & ~AA_LINK_BITS, dfaflags))
diff --git a/parser/tst/simple_tests/file/okay_audit_deny_link.sd b/parser/tst/simple_tests/file/okay_audit_deny_link.sd
new file mode 100644
index 0000000..393f906
--- /dev/null
+++ b/parser/tst/simple_tests/file/okay_audit_deny_link.sd
@@ -0,0 +1,9 @@
+#
+#=DESCRIPTION simple link access test
+#=EXRESULT PASS
+#
+
+profile test {
+ audit deny link /alpha/beta -> /tmp/**,
+}
+
diff --git a/parser/tst/simple_tests/file/okay_deny_link.sd b/parser/tst/simple_tests/file/okay_deny_link.sd
new file mode 100644
index 0000000..fe0684c
--- /dev/null
+++ b/parser/tst/simple_tests/file/okay_deny_link.sd
@@ -0,0 +1,9 @@
+#
+#=DESCRIPTION simple link access test
+#=EXRESULT PASS
+#
+
+profile test {
+ deny link /alpha/beta -> /tmp/**,
+}
+
--
2.1.4
More information about the AppArmor
mailing list