diff options
author | jilles <jilles@FreeBSD.org> | 2016-04-09 21:04:51 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2016-04-09 21:04:51 +0000 |
commit | e010ff64d6d0e0aad876d62fc2cfb99e2d6fb41e (patch) | |
tree | ce868aa84c60519a821a307f3f305c7fa86a45b6 /sys/kern | |
parent | f563d215af94d54bbdb4aca07a470f1f3a18de2a (diff) | |
download | FreeBSD-src-e010ff64d6d0e0aad876d62fc2cfb99e2d6fb41e.zip FreeBSD-src-e010ff64d6d0e0aad876d62fc2cfb99e2d6fb41e.tar.gz |
MFC r281086: utimensat: Correct Capsicum required capability rights.
Diffstat (limited to 'sys/kern')
-rw-r--r-- | sys/kern/vfs_syscalls.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index 4dafe75..aecf554 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -3405,6 +3405,7 @@ kern_utimensat(struct thread *td, int fd, char *path, enum uio_seg pathseg, { struct nameidata nd; struct timespec ts[2]; + cap_rights_t rights; int error, flags; if (flag & ~AT_SYMLINK_NOFOLLOW) @@ -3412,8 +3413,9 @@ kern_utimensat(struct thread *td, int fd, char *path, enum uio_seg pathseg, if ((error = getutimens(tptr, tptrseg, ts, &flags)) != 0) return (error); - NDINIT_AT(&nd, LOOKUP, ((flag & AT_SYMLINK_NOFOLLOW) ? NOFOLLOW : - FOLLOW) | AUDITVNODE1, pathseg, path, fd, td); + NDINIT_ATRIGHTS(&nd, LOOKUP, ((flag & AT_SYMLINK_NOFOLLOW) ? NOFOLLOW : + FOLLOW) | AUDITVNODE1, pathseg, path, fd, + cap_rights_init(&rights, CAP_FUTIMES), td); if ((error = namei(&nd)) != 0) return (error); /* |