From: Roland McGrath Date: Sun, 14 Mar 1999 12:59:57 +0000 (+0000) Subject: 1999-03-14 Roland McGrath X-Git-Tag: upstream/2.30~27480 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8ea6a7aa50e9d4c81740c1fdb19dca0d8be748e2;p=external%2Fglibc.git 1999-03-14 Roland McGrath * hurd/hurdlookup.c (__hurd_file_name_lookup_retry): Under O_NOFOLLOW, check for root-owned symlinks and reject them too. --- diff --git a/hurd/hurdlookup.c b/hurd/hurdlookup.c index 984a101..0714e4a 100644 --- a/hurd/hurdlookup.c +++ b/hurd/hurdlookup.c @@ -23,6 +23,7 @@ #include #include "stdio-common/_itoa.h" #include +#include /* Translate the error from dir_lookup into the error the user sees. */ @@ -197,9 +198,24 @@ __hurd_file_name_lookup_retry (error_t (*use_init_port) struct stat st; err = __io_stat (*result, &st); if (!err - && st.st_uid != 0 && (st.st_mode & (S_IPTRANS|S_IATRANS))) - err = ENOENT; + { + if (st.st_uid != 0) + err = ENOENT; + else if (st.st_mode & S_IPTRANS) + { + char buf[1024]; + char *trans = buf; + size_t translen = sizeof buf; + err = __file_get_translator (*result, + &trans, &translen); + if (!err + && translen > sizeof _HURD_SYMLINK + && !memcmp (trans, + _HURD_SYMLINK, sizeof _HURD_SYMLINK)) + err = ENOENT; + } + } } /* We got a successful translation. Now apply any open-time