diff options
author | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-03-18 19:43:04 +0100 |
---|---|---|
committer | Samuel Thibault <samuel.thibault@ens-lyon.org> | 2018-03-18 19:43:04 +0100 |
commit | 72103e73c9a76784b9e8b27a7d5b802178d6755b (patch) | |
tree | 1a250b52aba642cab342d056a09c08f1032f409c /ChangeLog | |
parent | 489999cc9cb1fab40c308b2e5ede3207e0f7a5be (diff) | |
download | glibc-72103e73c9a76784b9e8b27a7d5b802178d6755b.tar glibc-72103e73c9a76784b9e8b27a7d5b802178d6755b.tar.gz glibc-72103e73c9a76784b9e8b27a7d5b802178d6755b.tar.bz2 glibc-72103e73c9a76784b9e8b27a7d5b802178d6755b.zip |
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.
Diffstat (limited to 'ChangeLog')
-rw-r--r-- | ChangeLog | 4 |
1 files changed, 4 insertions, 0 deletions
@@ -64,6 +64,10 @@ * sysdeps/mach/hurd/cthreads.c: Include <cthreads.h>. * hurd/lookup-retry.c (__hurd_file_name_lookup_retry): Return ELOOP when opening a symlink with O_NOFOLLOW. + * 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. 2018-03-17 Samuel Thibault <samuel.thibault@ens-lyon.org> |