Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 May 2009 19:41:03 +0300
From:      Vlad GALU <dudu@dudu.ro>
To:        freebsd-fs@freebsd.org
Cc:        venatir <venatir@xss.ro>
Subject:   *stat()-ing symlinks with trailing slashes
Message-ID:  <ad79ad6b0905220941i138fd5cch61b0ab46e89c43fd@mail.gmail.com>

next in thread | raw e-mail | index | archive | help
-- cut here --
root@goofy / # rm -f passwd
root@goofy / # ln -s /etc/passwd passwd
root@goofy / # stat passwd
74 3 lrwxr-xr-x 1 root wheel 1668572463 11 "May 22 19:34:17 2009" "May
22 19:34:17 2009" "May 22 19:34:17 2009" "May 22 19:34:17 2009" 4096 0
0 passwd
root@goofy / # stat passwd/
74 95688 -rw-r--r-- 1 root wheel 393192 2158 "May 21 09:27:10 2009"
"May 21 09:27:10 2009" "May 22 17:25:49 2009" "Apr  7 13:05:32 2008"
4096 8 0 passwd/
root@goofy / #
-- and here --

stat(1) is smart enough to figure out that my /passwd is a symlink
then calls lstat() on it, thus returning the struct stat corresponding
to /etc/passwd
However, there's http://www.freebsd.org/cgi/query-pr.cgi?pr=kern/21768

vfs_lookup.c has this piece of code:
-- cut here --
        /*
         * Check for bogus trailing slashes.
         */
        if (trailing_slash && dp->v_type != VDIR) {
                error = ENOTDIR;
                goto bad2;
        }
-- and here --

I've CC-ed my friend Mircea Danila, who noticed this behavior with lighttpd.
As my friend Mircea Danila, who I've CC-ed found out, lighttpd mistakenly treats



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?ad79ad6b0905220941i138fd5cch61b0ab46e89c43fd>