This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/14578] New: fchmodat(..., AT_SYMLINK_NOFOLLOW) returns ENOTSUP on non-symlinks
- From: "mgorny at gentoo dot org" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sources dot redhat dot com
- Date: Thu, 13 Sep 2012 16:42:10 +0000
- Subject: [Bug libc/14578] New: fchmodat(..., AT_SYMLINK_NOFOLLOW) returns ENOTSUP on non-symlinks
- Auto-submitted: auto-generated
http://sourceware.org/bugzilla/show_bug.cgi?id=14578
Bug #: 14578
Summary: fchmodat(..., AT_SYMLINK_NOFOLLOW) returns ENOTSUP on
non-symlinks
Product: glibc
Version: unspecified
Status: NEW
Severity: normal
Priority: P2
Component: libc
AssignedTo: unassigned@sourceware.org
ReportedBy: mgorny@gentoo.org
CC: drepper.fsp@gmail.com
Classification: Unclassified
Tested with glibc-2.15, the relevant code verified to be the same in current
git.
CHOST: x86_64-unknown-linux-gnu
Kernel: 3.5.0 (vanilla)
Whenever fchmodat() is called with AT_SYMLINK_NOFOLLOW on Linux, it
unconditionally fails with ENOTSUP. The following snippet from
sysdeps/unix/sysv/linux/fchmodat.c is responsible for that:
#ifndef __NR_lchmod /* Linux so far has no lchmod syscall. */
if (flag & AT_SYMLINK_NOFOLLOW)
{
__set_errno (ENOTSUP);
return -1;
}
#endif
POSIX.2008 however specifies[1] that:
[EOPNOTSUPP]
The AT_SYMLINK_NOFOLLOW bit is set in the flag argument,
path names a symbolic link, and the system does not support changing
^^^^^^^^^^^^^^^^^^^^^^^^^^
the mode of a symbolic link.
In other words, I believe that fchmodat() should only return ENOTSUP if
AT_SYMLINK_NOFOLLOW is requested on a symbolic link. On regular files, it
should just change the mode.
[1]:http://pubs.opengroup.org/onlinepubs/9699919799/functions/chmod.html
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.