diff options
-rw-r--r-- | include/linux/audit.h | 1 | ||||
-rw-r--r-- | kernel/auditfilter.c | 1 | ||||
-rw-r--r-- | kernel/auditsc.c | 12 |
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); |