From: Jim Meyering Date: Sun, 8 Nov 2009 11:09:35 +0000 (+0100) Subject: utimens: remove invalid futimesat call X-Git-Tag: stable/20091120~49 X-Git-Url: http://erislabs.net/gitweb/?a=commitdiff_plain;h=7eb2ad0c94c0e39659b7c3dac6fca739d887dfbe;p=gnulib.git 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. (cherry picked from commit 26c5fd742f9136e2ddbd4695a9172c3fa30ea260) --- diff --git a/ChangeLog b/ChangeLog index c9d05ad3b..4c2911111 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2009-11-08 Jim Meyering + + 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 fflush, freadseek: use fseeko, not fseek diff --git a/lib/utimens.c b/lib/utimens.c index ce759a1d0..bd482d7d0 100644 --- a/lib/utimens.c +++ b/lib/utimens.c @@ -280,9 +280,9 @@ fdutimens (char const *file, int fd, struct timespec const timespec[2]) } 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 @@ fdutimens (char const *file, int fd, struct timespec const timespec[2]) 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