diff options
author | pjd <pjd@FreeBSD.org> | 2013-02-17 11:53:51 +0000 |
---|---|---|
committer | pjd <pjd@FreeBSD.org> | 2013-02-17 11:53:51 +0000 |
commit | c0b1af2f13016922d3c04f5cf19064b8e153b20c (patch) | |
tree | 30204915a106dde7cd0eaacf53247d1f51a3658a | |
parent | 06ac2f97fde6f20b6391870a305f08e437a785ba (diff) | |
download | FreeBSD-src-c0b1af2f13016922d3c04f5cf19064b8e153b20c.zip FreeBSD-src-c0b1af2f13016922d3c04f5cf19064b8e153b20c.tar.gz |
- Require CAP_FSYNC capability right when opening a file with O_SYNC or O_FSYNC
flags.
- While here simplify check for locking flags.
Sponsored by: The FreeBSD Foundation
-rw-r--r-- | sys/kern/vfs_syscalls.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c index dd1232c..12855a2 100644 --- a/sys/kern/vfs_syscalls.c +++ b/sys/kern/vfs_syscalls.c @@ -980,7 +980,10 @@ flags_to_rights(int flags) if (flags & O_TRUNC) rights |= CAP_FTRUNCATE; - if ((flags & O_EXLOCK) || (flags & O_SHLOCK)) + if (flags & (O_SYNC | O_FSYNC)) + rights |= CAP_FSYNC; + + if (flags & (O_EXLOCK | O_SHLOCK)) rights |= CAP_FLOCK; return (rights); |