hurd: Fix O_DIRECTORY | O_NOFOLLOW
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 18 Mar 2018 18:43:04 +0000 (19:43 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Sun, 18 Mar 2018 18:43:04 +0000 (19:43 +0100)
commit72103e73c9a76784b9e8b27a7d5b802178d6755b
tree1a250b52aba642cab342d056a09c08f1032f409c
parent489999cc9cb1fab40c308b2e5ede3207e0f7a5be
hurd: Fix O_DIRECTORY | O_NOFOLLOW

Appending / to the path to be looked up would make us always follow a final
symlink, even with O_NOTRANS (since the final resolution is after the
'/').  In the O_DIRECTORY | O_NOFOLLOW case, we thus have to really open
the node and stat it, which we already do anyway, and check for
directory type.

* hurd/hurdlookup.c (__hurd_file_name_lookup): Do not append '/' to
path when flags contains O_NOFOLLOW.
* hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Return ENOTDIR
if flags contains O_DIRECTORY and the result is a directory.
ChangeLog
hurd/hurdlookup.c
hurd/lookup-retry.c