From 48d21c528bbba64005d261ab0ee5e85e3bcb53be Mon Sep 17 00:00:00 2001 From: Dustin Kirkland Date: Thu, 16 Feb 2006 13:40:01 -0600 Subject: [PATCH] --- yaml --- r: 23991 b: refs/heads/master c: d9d9ec6e2c45b22282cd36cf92fcb23d504350a8 h: refs/heads/master i: 23989: e4ead7cccf53b464131cd40b625f33f914a5f0f3 23987: c96c69feb5ea13ffc560a1542976a0b64fd9b573 23983: 0fce2217466a0e0568126df32d5869c506e2f37f v: v3 --- [refs] | 2 +- trunk/kernel/auditfilter.c | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index c6a393f166b9..d2ba92755322 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5bdb98868062c1b14025883049551af343233187 +refs/heads/master: d9d9ec6e2c45b22282cd36cf92fcb23d504350a8 diff --git a/trunk/kernel/auditfilter.c b/trunk/kernel/auditfilter.c index 35f8fa82bb8b..b85fd8cce11f 100644 --- a/trunk/kernel/auditfilter.c +++ b/trunk/kernel/auditfilter.c @@ -160,11 +160,17 @@ static struct audit_entry *audit_rule_to_entry(struct audit_rule *rule) f->val = rule->values[i]; entry->rule.vers_ops = (f->op & AUDIT_OPERATORS) ? 2 : 1; + + /* Support for legacy operators where + * AUDIT_NEGATE bit signifies != and otherwise assumes == */ if (f->op & AUDIT_NEGATE) - f->op |= AUDIT_NOT_EQUAL; - else if (!(f->op & AUDIT_OPERATORS)) - f->op |= AUDIT_EQUAL; - f->op &= ~AUDIT_NEGATE; + f->op = AUDIT_NOT_EQUAL; + else if (!f->op) + f->op = AUDIT_EQUAL; + else if (f->op == AUDIT_OPERATORS) { + err = -EINVAL; + goto exit_free; + } } exit_nofree: @@ -533,9 +539,9 @@ int audit_comparator(const u32 left, const u32 op, const u32 right) return (left > right); case AUDIT_GREATER_THAN_OR_EQUAL: return (left >= right); - default: - return -EINVAL; } + BUG(); + return 0; }