This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[BUG] Generic syscalls -- chmod vs. fchmodat


Chris, Arnd, all,

Found a bug/incompatibility in the generic syscalls chmod implementation;
not sure if this is a kernel bug or a glibc bug, or how to correctly resolve it.

The new "generic chmod" implementation for glibc sends chmod to the
kernel call sys_fchmodat with  AT_FDCWD, instead of using the older
"deprecated" chmod syscall.  These two behave slightly differently:  with
the new implementation, the file "" (i.e. string of length zero) gets
interpreted
as . and so the syscall succeeds, setting perms on .  The old syscall would
return an errno=2 No such file or directory for this filename.

My gut instinct is that this is a kernel bug, but am not so sure; perhaps this
is "working as designed".  I thought of submitting a patch to fs/namei.c to
fix this, but then got lost in the details: there didn't seem to be
any particularly
good place to add this check.  Meanwhile, a glibc test case (posix/tst-chmod.c)
is failing as a result.

Should we put a check for this funky non-filename into the glibc
generic code, or into sys_chmodat? Recommendations?

--linas


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]