summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorrwatson <rwatson@FreeBSD.org>2009-07-01 22:47:45 +0000
committerrwatson <rwatson@FreeBSD.org>2009-07-01 22:47:45 +0000
commit0dd7c48b8f8a2815f634d7461ead43b7e5257221 (patch)
treef3d310b61952d4d0e1a3857397d4aff461f65549 /sys
parentdcdba7b2e3102ab811570c24ef3f74c14fcfe6be (diff)
downloadFreeBSD-src-0dd7c48b8f8a2815f634d7461ead43b7e5257221.zip
FreeBSD-src-0dd7c48b8f8a2815f634d7461ead43b7e5257221.tar.gz
For access(2) and eaccess(2), audit the requested access mode.
Approved by: re (audit argument blanket) MFC after: 3 days
Diffstat (limited to 'sys')
-rw-r--r--sys/kern/vfs_syscalls.c1
-rw-r--r--sys/security/audit/audit_bsm.c11
2 files changed, 10 insertions, 2 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index 2008efe..7252c47 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -2133,6 +2133,7 @@ kern_accessat(struct thread *td, int fd, char *path, enum uio_seg pathseg,
td->td_ucred = tmpcred;
} else
cred = tmpcred = td->td_ucred;
+ AUDIT_ARG_VALUE(mode);
NDINIT_AT(&nd, LOOKUP, FOLLOW | LOCKSHARED | LOCKLEAF | MPSAFE |
AUDITVNODE1, pathseg, path, fd, td);
if ((error = namei(&nd)) != 0)
diff --git a/sys/security/audit/audit_bsm.c b/sys/security/audit/audit_bsm.c
index 4b2b6f1..dd23c99 100644
--- a/sys/security/audit/audit_bsm.c
+++ b/sys/security/audit/audit_bsm.c
@@ -706,10 +706,8 @@ kaudit_to_bsm(struct kaudit_record *kar, struct au_record **pau)
}
/* FALLTHROUGH */
- case AUE_ACCESS:
case AUE_CHDIR:
case AUE_CHROOT:
- case AUE_EACCESS:
case AUE_GETATTRLIST:
case AUE_JAIL:
case AUE_LUTIMES:
@@ -732,6 +730,15 @@ kaudit_to_bsm(struct kaudit_record *kar, struct au_record **pau)
UPATH1_VNODE1_TOKENS;
break;
+ case AUE_ACCESS:
+ case AUE_EACCESS:
+ UPATH1_VNODE1_TOKENS;
+ if (ARG_IS_VALID(kar, ARG_VALUE)) {
+ tok = au_to_arg32(1, "mode", ar->ar_arg_value);
+ kau_write(rec, tok);
+ }
+ break;
+
case AUE_FHSTATFS:
case AUE_FHOPEN:
case AUE_FHSTAT:
OpenPOWER on IntegriCloud