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 67b66c37a254..55cb3daaf474 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -223,6 +223,7 @@ | |||
223 | #define AUDIT_PERM 106 | 223 | #define AUDIT_PERM 106 |
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 | 227 | ||
227 | #define AUDIT_ARG0 200 | 228 | #define AUDIT_ARG0 200 |
228 | #define AUDIT_ARG1 (AUDIT_ARG0+1) | 229 | #define AUDIT_ARG1 (AUDIT_ARG0+1) |
diff --git a/kernel/auditfilter.c b/kernel/auditfilter.c index 903caa269b5c..13e997423dcd 100644 --- a/kernel/auditfilter.c +++ b/kernel/auditfilter.c | |||
@@ -461,6 +461,7 @@ static struct audit_entry *audit_data_to_entry(struct audit_rule_data *data, | |||
461 | case AUDIT_ARG1: | 461 | case AUDIT_ARG1: |
462 | case AUDIT_ARG2: | 462 | case AUDIT_ARG2: |
463 | case AUDIT_ARG3: | 463 | case AUDIT_ARG3: |
464 | case AUDIT_OBJ_UID: | ||
464 | break; | 465 | break; |
465 | case AUDIT_ARCH: | 466 | case AUDIT_ARCH: |
466 | entry->rule.arch_f = f; | 467 | entry->rule.arch_f = f; |
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index 4d8920f5ab88..5cf3ecc01517 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -586,6 +586,18 @@ static int audit_filter_rules(struct task_struct *tsk, | |||
586 | } | 586 | } |
587 | } | 587 | } |
588 | break; | 588 | break; |
589 | case AUDIT_OBJ_UID: | ||
590 | if (name) { | ||
591 | result = audit_comparator(name->uid, f->op, f->val); | ||
592 | } else if (ctx) { | ||
593 | list_for_each_entry(n, &ctx->names_list, list) { | ||
594 | if (audit_comparator(n->uid, f->op, f->val)) { | ||
595 | ++result; | ||
596 | break; | ||
597 | } | ||
598 | } | ||
599 | } | ||
600 | break; | ||
589 | case AUDIT_WATCH: | 601 | case AUDIT_WATCH: |
590 | if (name) | 602 | if (name) |
591 | result = audit_watch_compare(rule->watch, name->ino, name->dev); | 603 | result = audit_watch_compare(rule->watch, name->ino, name->dev); |