Signed-off-by: John Johansen <[email protected]>

---
 parser/libapparmor_re/aare_rules.cc |   28 ++++++++++++++++++----------
 parser/libapparmor_re/aare_rules.h  |    1 +
 2 files changed, 19 insertions(+), 10 deletions(-)

--- 2.9-test.orig/parser/libapparmor_re/aare_rules.cc
+++ 2.9-test/parser/libapparmor_re/aare_rules.cc
@@ -76,6 +76,21 @@
 #undef RESET_FLAGS
 }
 
+void aare_rules::add_to_rules(Node *tree, Node *perms)
+{
+       if (reverse)
+               flip_tree(tree);
+       if (root)
+               root = new AltNode(root, new CatNode(tree, perms));
+       else
+               root = new CatNode(tree, perms);
+}
+
+static Node *cat_with_null_seperator(Node *l, Node *r)
+{
+       return new CatNode(new CatNode(l, new CharNode(0)), r);
+}
+
 bool aare_rules::add_rule_vec(int deny, uint32_t perms, uint32_t audit,
                              int count, const char **rulev, dfaflags_t flags)
 {
@@ -89,13 +104,9 @@
                return false;
        for (int i = 1; i < count; i++) {
                Node *subtree = NULL;
-               Node *node = new CharNode(0);
-               if (!node)
-                       return false;
-               tree = new CatNode(tree, node);
                if (regex_parse(&subtree, rulev[i]))
-                       return false;
-               tree = new CatNode(tree, subtree);
+                       return 0;
+               tree = cat_with_null_seperator(tree, subtree);
        }
 
        /*
@@ -200,10 +211,7 @@
                cerr << "\n\n";
        }
 
-       if (root)
-               root = new AltNode(root, new CatNode(tree, accept));
-       else
-               root = new CatNode(tree, accept);
+       add_to_rules(tree, accept);
 
        rule_count++;
 
--- 2.9-test.orig/parser/libapparmor_re/aare_rules.h
+++ 2.9-test/parser/libapparmor_re/aare_rules.h
@@ -28,6 +28,7 @@
 
 class aare_rules {
        Node *root;
+       void add_to_rules(Node *tree, Node *perms);
 public:
        int reverse;
        int rule_count;


-- 
AppArmor mailing list
[email protected]
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/apparmor

Reply via email to