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.
This commit is contained in:
Jim Meyering
2009-11-08 15:13:23 +01:00
parent 7becd9d708
commit 26c5fd742f
2 changed files with 12 additions and 7 deletions
+8
View File
@@ -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
+4 -7
View File
@@ -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