# HG changeset patch # User Jim Meyering # Date 1257678575 -3600 # Node ID f704a98798c2409682177e1dfc48eb2984541e00 # Parent 83ddd76ac09183d816f5855e4ae61f60c1a1912a 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. diff --git a/ChangeLog b/ChangeLog --- 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 --- 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