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 94fbdc1eefe27434acdd8c5fcf34d7e686bf730f..67653c1192ad1e2c1f355e24b799fd76d3fdafb6 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 0df0b9da1b891205c5e7240ee6220978e97123e1..a5c9a4d1214b9796d17abe3d4ee6f4f4e8cc9b38 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);