Removes an unnecessary variable, simplifies and unifies some of the loop
logic, and removes commented out code.

Signed-off-by: Tyler Hicks <[email protected]>
---
 parser/parser_merge.c | 51 ++++++++++++++++++++++-----------------------------
 1 file changed, 22 insertions(+), 29 deletions(-)

diff --git a/parser/parser_merge.c b/parser/parser_merge.c
index bada358..156057f 100644
--- a/parser/parser_merge.c
+++ b/parser/parser_merge.c
@@ -76,14 +76,13 @@ static int file_comp(const void *c1, const void *c2)
 
 static int process_file_entries(struct codomain *cod)
 {
-       int n, count;
-       struct cod_entry *flist, *cur, *next;
+       struct cod_entry *cur, *next;
        struct cod_entry **table;
+       int n, count = 0;
 
-       for (flist = cod->entries, n = 0; flist; flist = flist->next)
-               n++;
+       for (cur = cod->entries; cur; cur = cur->next)
+               count++;
 
-       count = n;
        if (count < 2)
                return 1;
 
@@ -93,12 +92,8 @@ static int process_file_entries(struct codomain *cod)
                return 0;
        }
 
-       n = 0;
-       for (flist = cod->entries; flist; flist = flist->next) {
-               table[n] = flist;
-               n++;
-       }
-
+       for (cur = cod->entries, n = 0; cur; cur = cur->next, n++)
+               table[n] = cur;
        qsort(table, count, sizeof(struct cod_entry *), file_comp);
        table[count] = NULL;
        for (n = 0; n < count; n++)
@@ -107,26 +102,24 @@ static int process_file_entries(struct codomain *cod)
        free(table);
 
        /* walk the sorted table merging similar entries */
-       for (cur = cod->entries, next = cur->next; next != NULL; next = 
cur->next) {
-               if (file_comp(&cur, &next) == 0) {
-                       /* check for merged x consistency */
-                       if (!is_merged_x_consistent(cur->mode, next->mode)) {
-                               PERROR(_("profile %s: has merged rule %s with "
-                                        "conflicting x modifiers\n"),
-                                        cod->name, cur->name);
-                               return 0;
-                       }
-//if (next->audit)
-//fprintf(stderr, "warning: merging rule 0x%x %s\n", next->audit, next->name);
-                       cur->mode |= next->mode;
-                       cur->audit |= next->audit;
-                       cur->next = next->next;
-
-                       next->next = NULL;
-                       free_cod_entries(next);
-               } else {
+       for (cur = cod->entries, next = cur->next; next; next = cur->next) {
+               if (file_comp(&cur, &next) != 0) {
                        cur = next;
+                       continue;
                }
+
+               /* check for merged x consistency */
+               if (!is_merged_x_consistent(cur->mode, next->mode)) {
+                       PERROR(_("profile %s: has merged rule %s with 
conflicting x modifiers\n"),
+                               cod->name, cur->name);
+                       return 0;
+               }
+               cur->mode |= next->mode;
+               cur->audit |= next->audit;
+               cur->next = next->next;
+
+               next->next = NULL;
+               free_cod_entries(next);
        }
 
        return 1;
-- 
1.8.3.2


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

Reply via email to