diff --git a/parser/parser_merge.c b/parser/parser_merge.c index 523933cab..972bb9a47 100644 --- a/parser/parser_merge.c +++ b/parser/parser_merge.c @@ -54,6 +54,9 @@ static int file_comp(const void *c1, const void *c2) if ((*e1)->audit != (*e2)->audit) return (*e1)->audit < (*e2)->audit ? -1 : 1; + if ((*e1)->priority != (*e2)->priority) + return (*e2)->priority - (*e1)->priority; + return strcmp((*e1)->name, (*e2)->name); } diff --git a/parser/parser_misc.c b/parser/parser_misc.c index bdbe4bb65..b55a433e4 100644 --- a/parser/parser_misc.c +++ b/parser/parser_misc.c @@ -1079,6 +1079,8 @@ void debug_cod_entries(struct cod_entry *list) debug_base_perm_mask(SHIFT_TO_BASE(item->perms, AA_USER_SHIFT)); printf(":"); debug_base_perm_mask(SHIFT_TO_BASE(item->perms, AA_OTHER_SHIFT)); + + printf(" priority=%d ", item->priority); if (item->name) printf("\tName:\t(%s)\n", item->name); else @@ -1122,6 +1124,8 @@ bool entry_add_prefix(struct cod_entry *entry, const prefixes &p, const char *&e else if (p.owner == 2) entry->perms &= (AA_OTHER_PERMS | AA_SHARED_PERMS); + entry->priority = p.priority; + /* implied audit modifier */ if (p.audit == AUDIT_FORCE && (entry->rule_mode != RULE_DENY)) entry->audit = AUDIT_FORCE;