aboutsummaryrefslogtreecommitdiffstats
path: root/kernel
diff options
context:
space:
mode:
authorEric Paris <eparis@redhat.com>2012-01-03 14:23:07 -0500
committerAl Viro <viro@zeniv.linux.org.uk>2012-01-17 16:16:59 -0500
commit54d3218b31aee5bc9c859ae60fbde933d922448b (patch)
treeebc383920713c283133d885191d0c19cb049afd2 /kernel
parentefaffd6e4417860c67576ac760dd6e8bbd15f006 (diff)
audit: allow audit matching on inode gid
Much like the ability to filter audit on the uid of an inode collected, we should be able to filter on the gid of the inode. Signed-off-by: Eric Paris <eparis@redhat.com>
Diffstat (limited to 'kernel')
-rw-r--r--kernel/auditfilter.c1
-rw-r--r--kernel/auditsc.c12
2 files changed, 13 insertions, 0 deletions
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c
index 13e997423dcd..f10605c787e6 100644
--- a/kernel/auditfilter.c
+++ b/kernel/auditfilter.c
@@ -462,6 +462,7 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data,
462 case AUDIT_ARG2: 462 case AUDIT_ARG2:
463 case AUDIT_ARG3: 463 case AUDIT_ARG3:
464 case AUDIT_OBJ_UID: 464 case AUDIT_OBJ_UID:
465 case AUDIT_OBJ_GID:
465 break; 466 break;
466 case AUDIT_ARCH: 467 case AUDIT_ARCH:
467 entry->rule.arch_f = f; 468 entry->rule.arch_f = f;
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index 5cf3ecc01517..87b375fb12ff 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -598,6 +598,18 @@ static int audit_filter_rules(struct task_struct *tsk,
598 } 598 }
599 } 599 }
600 break; 600 break;
601 case AUDIT_OBJ_GID:
602 if (name) {
603 result = audit_comparator(name->gid, f->op, f->val);
604 } else if (ctx) {
605 list_for_each_entry(n, &ctx->names_list, list) {
606 if (audit_comparator(n->gid, f->op, f->val)) {
607 ++result;
608 break;
609 }
610 }
611 }
612 break;
601 case AUDIT_WATCH: 613 case AUDIT_WATCH:
602 if (name) 614 if (name)
603 result = audit_watch_compare(rule->watch, name->ino, name->dev); 615 result = audit_watch_compare(rule->watch, name->ino, name->dev);