Messages in this thread | | | From | Andrew Ayer <> | Subject | [PATCH 0/2] vfs: POSIX-compliant version of fchmodat with flag argument | Date | Fri, 30 Dec 2011 16:26:49 -0800 |
| |
Hi,
The below patches implement a 4 argument version of fchmodat (fchmodat4) that supports a flag argument, as specified by POSIX. Currently, the glibc wrapper has a flag argument, but fails with EOPNOTSUPP if you specify AT_SYMLINK_NOFOLLOW. POSIX says that fchmodat should only fail with EOPNOTSUPP if you specify AT_SYMLINK_NOFOLLOW and the path actually refers to a symbolic link (and the system doesn't support changing the mode of symbolic links). Unfortunately glibc can't do better because the current syscall doesn't have a flag argument.
In addition to supporting AT_SYMLINK_NOFOLLOW, this also supports the AT_EMPTY_PATH flag, just like fchownat.
Besides the POSIX-compliance, this patch will make it possible to ensure, in a race-free way, that you do not follow symlinks when chmodding. Previously, you could open a file with O_NOFOLLOW and fchmod it, but this only worked if you had read or write permissions on the file. Now you can open the file with O_PATH|O_NOFOLLOW and do fchmodat with AT_EMPTY_PATH.
Any feedback is welcome.
Cheers, Andrew
| |