aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/linux/audit.h1
-rw-r--r--kernel/auditfilter.c1
-rw-r--r--kernel/auditsc.c12
3 files changed, 14 insertions, 0 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h
index 55cb3daaf474..e36aa37c88af 100644
--- a/include/linux/audit.h
+++ b/include/linux/audit.h
@@ -224,6 +224,7 @@
224#define AUDIT_DIR 107 224#define AUDIT_DIR 107
225#define AUDIT_FILETYPE 108 225#define AUDIT_FILETYPE 108
226#define AUDIT_OBJ_UID 109 226#define AUDIT_OBJ_UID 109
227#define AUDIT_OBJ_GID 110
227 228
228#define AUDIT_ARG0 200 229#define AUDIT_ARG0 200
229#define AUDIT_ARG1 (AUDIT_ARG0+1) 230#define AUDIT_ARG1 (AUDIT_ARG0+1)
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);