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); |
