On Jan 23 16:31, Ken Brown wrote: > Commit aa55d22c, "Cygwin: honor the O_PATH flag when opening a FIFO", > fixed a hang but otherwise didn't accomplish the purpose of the O_PATH > flag as stated in the Linux man page for open(2): > > Obtain a file descriptor that can be used for two purposes: to > indicate a location in the filesystem tree and to perform > operations that act purely at the file descriptor level. The > file itself is not opened, and other file operations (e.g., > read(2), write(2), fchmod(2), fchown(2), fgetxattr(2), > ioctl(2), mmap(2)) fail with the error EBADF. > > [The man page goes on to describe operations that *can* be > performed: close(2), fchdir(2), fstat(2),....] > > Opening a file or directory with the O_PATH flag requires no > permissions on the object itself (but does require execute > permission on the directories in the path prefix). > > The first problem in the current implementation is that if open(2) is > called on a FIFO, fhandler_base::device_access_denied is called and > tries to open the FIFO with read access, which isn't supposed to be > required. This is fixed by the first patch in this series. > > The second patch makes fhandler_fifo::open call fhandler_base::open_fs > if O_PATH is set, so that we actually obtain a handle that can be used > for the purposes stated above. > > The third page tweaks fhandler_fifo::fcntl and fhandler_fifo::dup so > that they work with O_PATH. > > In a followup email I'll provide the program I used to test this > implementation. > > Ken Brown (3): > Cygwin: device_access_denied: return false if O_PATH is set > Cygwin: re-implement fhandler_fifo::open with O_PATH > Cygwin: FIFO: tweak fcntl and dup when O_PATH is set > > winsup/cygwin/fhandler.cc | 3 +++ > winsup/cygwin/fhandler_fifo.cc | 15 ++++++--------- > 2 files changed, 9 insertions(+), 9 deletions(-) > > -- > 2.21.0
Pushed. I'll create new developer snapshots. Thanks, Corinna -- Corinna Vinschen Cygwin Maintainer
signature.asc
Description: PGP signature
