X-Git-Url: http://erislabs.net/gitweb/?a=blobdiff_plain;f=lib%2Fchdir-safer.c;h=03f372050f9decc43e326e406d7f9aa3af0b5821;hb=ecbcf1d92dc5993c972c0b5f002ef0b04abf97b8;hp=a5c9a4d1214b9796d17abe3d4ee6f4f4e8cc9b38;hpb=5b66f060813b0b6042c0814ec1ab06e65f775063;p=gnulib.git diff --git a/lib/chdir-safer.c b/lib/chdir-safer.c index a5c9a4d12..03f372050 100644 --- a/lib/chdir-safer.c +++ b/lib/chdir-safer.c @@ -50,8 +50,10 @@ chdir_no_follow (char const *dir) /* If open follows symlinks, lstat DIR and fstat FD to ensure that they are the same file; if they are different files, set errno to ELOOP (the same value that open uses for symlinks with - O_NOFOLLOW) so the caller can report a failure. */ - if (! HAVE_WORKING_O_NOFOLLOW) + O_NOFOLLOW) so the caller can report a failure. + Skip this check if ELOOP == 0, which should be the case + on any system that lacks symlink support. */ + if (ELOOP && ! HAVE_WORKING_O_NOFOLLOW) { struct stat sb1; result = lstat (dir, &sb1);