aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOndrej Mosnáček <omosnace@redhat.com>2018-04-09 04:00:06 -0400
committerPaul Moore <paul@paul-moore.com>2018-04-24 11:18:10 -0400
commit23bcc480dac204c7dbdf49d96b2c918ed98223c2 (patch)
treed2e2fa1b394911fc278384b647a914ab506feca8
parentd96f92f4aae1132482ce0a584c4bc3ce32c796ea (diff)
audit: allow not equal op for audit by executable
Current implementation of auditing by executable name only implements the 'equal' operator. This patch extends it to also support the 'not equal' operator. See: https://github.com/linux-audit/audit-kernel/issues/53 Signed-off-by: Ondrej Mosnacek <omosnace@redhat.com> Reviewed-by: Richard Guy Briggs <rgb@redhat.com> Signed-off-by: Paul Moore <paul@paul-moore.com>
-rw-r--r--kernel/auditfilter.c2
-rw-r--r--kernel/auditsc.c2
2 files changed, 3 insertions, 1 deletions
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
index d7a807e81451..a0c5a3ec6e60 100644
--- a/kernel/auditfilter.c
+++ b/kernel/auditfilter.c
@@ -426,7 +426,7 @@ static int audit_field_valid(struct audit_entry *entry, struct audit_field *f)
426 return -EINVAL; 426 return -EINVAL;
427 break; 427 break;
428 case AUDIT_EXE: 428 case AUDIT_EXE:
429 if (f->op != Audit_equal) 429 if (f->op != Audit_not_equal && f->op != Audit_equal)
430 return -EINVAL; 430 return -EINVAL;
431 if (entry->rule.listnr != AUDIT_FILTER_EXIT) 431 if (entry->rule.listnr != AUDIT_FILTER_EXIT)
432 return -EINVAL; 432 return -EINVAL;
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index 4e0a4ac803db..479c031ec54c 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -471,6 +471,8 @@ static int audit_filter_rules(struct task_struct *tsk,
471 break; 471 break;
472 case AUDIT_EXE: 472 case AUDIT_EXE:
473 result = audit_exe_compare(tsk, rule->exe); 473 result = audit_exe_compare(tsk, rule->exe);
474 if (f->op == Audit_not_equal)
475 result = !result;
474 break; 476 break;
475 case AUDIT_UID: 477 case AUDIT_UID:
476 result = audit_uid_comparator(cred->uid, f->op, f->uid); 478 result = audit_uid_comparator(cred->uid, f->op, f->uid);