changeset 12256:f704a98798c2

utimens: remove invalid futimesat call * lib/utimens.c (fdutimens) [HAVE_FUTIMESAT]: Remove invalid futimesat call. It used the file descriptor of the target file as the DIR_FD parameter and NULL as the file name. That caused failure with errno == EFAULT on FreeBSD-8.0-rc2.
author Jim Meyering <meyering@redhat.com>
date Sun, 08 Nov 2009 12:09:35 +0100
parents 83ddd76ac091
children 37417e58ec13
files ChangeLog lib/utimens.c
diffstat 2 files changed, 12 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2009-11-08  Jim Meyering  <meyering@redhat.com>
+
+	utimens: remove invalid futimesat call
+	* lib/utimens.c (fdutimens): Remove invalid futimesat call.
+	It used the file descriptor of the target file as the DIR_FD
+	parameter and NULL as the file name.  That caused failure with
+	errno == EFAULT on FreeBSD-8.0-rc2
+
 2009-11-07  Eric Blake  <ebb9@byu.net>
 
 	fflush, freadseek: use fseeko, not fseek
--- a/lib/utimens.c
+++ b/lib/utimens.c
@@ -280,9 +280,9 @@
       }
     else
       {
-        /* If futimesat or futimes fails here, don't try to speed things
-           up by returning right away.  glibc can incorrectly fail with
-           errno == ENOENT if /proc isn't mounted.  Also, Mandrake 10.0
+        /* If futimesat (above) or futimes fails here, don't try to speed
+           things up by returning right away.  glibc can incorrectly fail
+           with errno == ENOENT if /proc isn't mounted.  Also, Mandrake 10.0
            in high security mode doesn't allow ordinary users to read
            /proc/self, so glibc incorrectly fails with errno == EACCES.
            If errno == EIO, EPERM, or EROFS, it's probably safe to fail
@@ -290,10 +290,7 @@
            worth optimizing, and who knows what other messed-up systems
            are out there?  So play it safe and fall back on the code
            below.  */
-# if HAVE_FUTIMESAT
-        if (futimesat (fd, NULL, t) == 0)
-          return 0;
-# elif HAVE_FUTIMES
+# if HAVE_FUTIMES
         if (futimes (fd, t) == 0)
           return 0;
 # endif