Make chdir-safer.c slightly safer.
authorJim Meyering <meyering@redhat.com>
Sat, 10 May 2008 13:15:11 +0000 (15:15 +0200)
committerJim Meyering <meyering@redhat.com>
Sat, 10 May 2008 13:43:13 +0000 (15:43 +0200)
* lib/chdir-safer.c (chdir_no_follow): Test HAVE_WORKING_O_NOFOLLOW,
not O_NOFOLLOW, in case the latter is nonzero and open ignores it.

ChangeLog
lib/chdir-safer.c

index 94fbdc1..67653c1 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,9 @@
 2008-05-10  Jim Meyering  <meyering@redhat.com>
 
+       Make chdir-safer.c slightly safer.
+       * lib/chdir-safer.c (chdir_no_follow): Test HAVE_WORKING_O_NOFOLLOW,
+       not O_NOFOLLOW, in case the latter is nonzero and open ignores it.
+
        Avoid compile failure on systems without ELOOP (like mingw).
        * lib/chdir-safer.c (ELOOP): Define if not already defined.
        Reported by Bruno Haible.
index 0df0b9d..a5c9a4d 100644 (file)
@@ -51,7 +51,7 @@ chdir_no_follow (char const *dir)
      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 (! O_NOFOLLOW)
+  if (! HAVE_WORKING_O_NOFOLLOW)
     {
       struct stat sb1;
       result = lstat (dir, &sb1);