fix missing flags arg to fstatat syscall in fstat fallback path
authorRich Felker <dalias@aerifal.cx>
Fri, 18 Jul 2014 19:24:04 +0000 (15:24 -0400)
committerRich Felker <dalias@aerifal.cx>
Fri, 18 Jul 2014 19:24:04 +0000 (15:24 -0400)
this code path is used only on archs without the plain, non-at
syscalls, and only when the fstat syscall fails with EBADF on a valid
file descriptor. this in turn can happen only for O_PATH file
descriptors, and may not happen at all on the newer kernels needed for
supporting such archs.

with the flags argument omitted, spurious fstat failures may happen
when the argument register happens to have the AT_SYMLINK_NOFOLLOW bit
set.

src/stat/fstat.c

index a92898675dd005ab837cbfbdbbfdfe1527358a23..ab4afc0f9220cc53951630128e6b8f8ac295b842 100644 (file)
@@ -17,7 +17,7 @@ int fstat(int fd, struct stat *st)
 #ifdef SYS_stat
        return syscall(SYS_stat, buf, st);
 #else
-       return syscall(SYS_fstatat, AT_FDCWD, buf, st);
+       return syscall(SYS_fstatat, AT_FDCWD, buf, st, 0);
 #endif
 }