* inet/rcmd.c: Use *stat64 instead of *stat internally.
	* inet/ruserpass.c: Likewise.
	* intl/loadmsgcat.c: Likewise.
	* io/getdirname.c: Likewise.
	* locale/loadlocale.c: Likewise.
	* misc/getusershell.c: Likewise.
	* stdlib/canonicalize.c: Likewise.
	* sysdeps/posix/euidaccess.c: Likewise.
	* sysdeps/posix/isfdtype.c: Likewise.
	* sysdeps/posix/posix_fallocate.c: Likewise.
	* sysdeps/posix/tempname.c: Likewise.
	* sysdeps/unix/grantpt.c: Likewise.
	* sysdeps/unix/opendir.c: Likewise.
	* sysdeps/unix/sysv/linux/fstatvfs.c: Likewise.
	* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
	* sysdeps/unix/sysv/linux/ptsname.c: Likewise.
	* sysdeps/unix/sysv/linux/statvfs.c: Likewise.
	* sysdeps/unix/sysv/linux/ttyname.c: Likewise.
	* sysdeps/unix/sysv/linux/ttyname_r.c: Likewise.
	* sysvipc/ftok.c: Likewise.
	* time/getdate.c: Likewise.

	* time/getdate.c: Add extra access test.

2000-08-31  Ulrich Drepper  <drepper@redhat.com>
This commit is contained in:
Ulrich Drepper 2000-09-01 02:26:05 +00:00
parent 3d784d8300
commit 8edf6e0d7e
22 changed files with 104 additions and 74 deletions

View File

@ -1,3 +1,29 @@
2000-08-31 Ulrich Drepper <drepper@redhat.com>
* inet/rcmd.c: Use *stat64 instead of *stat internally.
* inet/ruserpass.c: Likewise.
* intl/loadmsgcat.c: Likewise.
* io/getdirname.c: Likewise.
* locale/loadlocale.c: Likewise.
* misc/getusershell.c: Likewise.
* stdlib/canonicalize.c: Likewise.
* sysdeps/posix/euidaccess.c: Likewise.
* sysdeps/posix/isfdtype.c: Likewise.
* sysdeps/posix/posix_fallocate.c: Likewise.
* sysdeps/posix/tempname.c: Likewise.
* sysdeps/unix/grantpt.c: Likewise.
* sysdeps/unix/opendir.c: Likewise.
* sysdeps/unix/sysv/linux/fstatvfs.c: Likewise.
* sysdeps/unix/sysv/linux/internal_statvfs.c: Likewise.
* sysdeps/unix/sysv/linux/ptsname.c: Likewise.
* sysdeps/unix/sysv/linux/statvfs.c: Likewise.
* sysdeps/unix/sysv/linux/ttyname.c: Likewise.
* sysdeps/unix/sysv/linux/ttyname_r.c: Likewise.
* sysvipc/ftok.c: Likewise.
* time/getdate.c: Likewise.
* time/getdate.c: Add extra access test.
2000-08-31 Ulrich Drepper <drepper@redhat.com>
* version.h (VERSION): Bump to 2.1.93.

View File

@ -401,7 +401,7 @@ ruserok(rhost, superuser, ruser, luser)
static FILE *
iruserfopen (const char *file, uid_t okuser)
{
struct stat st;
struct stat64 st;
char *cp = NULL;
FILE *res = NULL;
@ -409,7 +409,7 @@ iruserfopen (const char *file, uid_t okuser)
root, if writeable by anyone but the owner, or if hardlinked
anywhere, quit. */
cp = NULL;
if (__lxstat (_STAT_VER, file, &st))
if (__lxstat64 (_STAT_VER, file, &st))
cp = _("lstat failed");
else if (!S_ISREG (st.st_mode))
cp = _("not regular file");
@ -418,7 +418,7 @@ iruserfopen (const char *file, uid_t okuser)
res = fopen (file, "r");
if (!res)
cp = _("cannot open");
else if (__fxstat (_STAT_VER, fileno (res), &st) < 0)
else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0)
cp = _("fstat failed");
else if (st.st_uid && st.st_uid != okuser)
cp = _("bad owner");

View File

@ -99,7 +99,7 @@ ruserpass(host, aname, apass)
char *hdir, *buf, *tmp;
char myname[1024], *mydomain;
int t, usedefault = 0;
struct stat stb;
struct stat64 stb;
hdir = __secure_getenv("HOME");
if (hdir == NULL) {
@ -176,7 +176,7 @@ next:
break;
case PASSWD:
if (strcmp(*aname, "anonymous") &&
fstat(fileno(cfile), &stb) >= 0 &&
fstat64(fileno(cfile), &stb) >= 0 &&
(stb.st_mode & 077) != 0) {
warnx(_("Error: .netrc file is readable by others."));
warnx(_("Remove password or make file unreadable by others."));
@ -195,7 +195,7 @@ next:
break;
case ACCOUNT:
#if 0
if (fstat(fileno(cfile), &stb) >= 0
if (fstat64(fileno(cfile), &stb) >= 0
&& (stb.st_mode & 077) != 0) {
warnx("Error: .netrc file is readable by others.");
warnx("Remove account or make file unreadable by others.");

View File

@ -121,7 +121,7 @@ _nl_load_domain (domain_file)
{
int fd;
size_t size;
struct stat st;
struct stat64 st;
struct mo_file_header *data = (struct mo_file_header *) -1;
int use_mmap = 0;
struct loaded_domain *domain;
@ -143,7 +143,7 @@ _nl_load_domain (domain_file)
return;
/* We must know about the size of the file. */
if (__builtin_expect (fstat (fd, &st) != 0, 0)
if (__builtin_expect (fstat64 (fd, &st) != 0, 0)
|| __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
|| __builtin_expect (size < sizeof (struct mo_file_header), 0))
{

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992, 1997, 1998 Free Software Foundation, Inc.
/* Copyright (C) 1992, 1997, 1998, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -29,14 +29,14 @@ char *
get_current_dir_name (void)
{
char *pwd;
struct stat dotstat, pwdstat;
struct stat64 dotstat, pwdstat;
pwd = getenv ("PWD");
if (pwd != NULL &&
stat (".", &dotstat) == 0 &&
stat (pwd, &pwdstat) == 0 &&
pwdstat.st_dev == dotstat.st_dev &&
pwdstat.st_ino == dotstat.st_ino)
if (pwd != NULL
&& stat64 (".", &dotstat) == 0
&& stat64 (pwd, &pwdstat) == 0
&& pwdstat.st_dev == dotstat.st_dev
&& pwdstat.st_ino == dotstat.st_ino)
/* The PWD value is correct. Use it. */
return __strdup (pwd);

View File

@ -69,7 +69,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
unsigned int nstrings;
unsigned int strindex[0];
} *filedata;
struct stat st;
struct stat64 st;
struct locale_data *newdata;
int save_err;
int mmaped = 1;
@ -83,7 +83,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
/* Cannot open the file. */
return;
if (__builtin_expect (__fstat (fd, &st), 0) < 0)
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0)
goto puntfd;
if (__builtin_expect (S_ISDIR (st.st_mode), 0))
{
@ -106,7 +106,7 @@ _nl_load_locale (struct loaded_l10nfile *file, int category)
if (__builtin_expect (fd, 0) < 0)
return;
if (__builtin_expect (__fstat (fd, &st), 0) < 0)
if (__builtin_expect (__fxstat64 (_STAT_VER, fd, &st), 0) < 0)
goto puntfd;
}

View File

@ -91,7 +91,7 @@ initshells()
{
register char **sp, *cp;
register FILE *fp;
struct stat statb;
struct stat64 statb;
int flen;
if (shells != NULL)
@ -102,7 +102,7 @@ initshells()
strings = NULL;
if ((fp = fopen(_PATH_SHELLS, "r")) == NULL)
return (okshells);
if (fstat(fileno(fp), &statb) == -1) {
if (fstat64(fileno(fp), &statb) == -1) {
(void)fclose(fp);
return (okshells);
}

View File

@ -1,5 +1,5 @@
/* Return the canonical absolute name of a given file.
Copyright (C) 1996, 1997, 1998, 1999 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -91,7 +91,7 @@ canonicalize (const char *name, char *resolved)
for (start = end = name; *start; start = end)
{
struct stat st;
struct stat64 st;
int n;
/* Skip sequence of multiple path-separators. */
@ -147,7 +147,7 @@ canonicalize (const char *name, char *resolved)
dest = __mempcpy (dest, start, end - start);
*dest = '\0';
if (__lxstat (_STAT_VER, rpath, &st) < 0)
if (__lxstat64 (_STAT_VER, rpath, &st) < 0)
goto error;
if (S_ISLNK (st.st_mode))

View File

@ -1,5 +1,5 @@
/* Check if effective user id can access file
Copyright (C) 1990, 91, 95, 96, 97, 98, 99 Free Software Foundation, Inc.
Copyright (C) 1990,91,95,96,97,98,99,2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -133,7 +133,7 @@ euidaccess (path, mode)
const char *path;
int mode;
{
struct stat stats;
struct stat64 stats;
int granted;
#ifdef _LIBC
@ -155,7 +155,7 @@ euidaccess (path, mode)
return access (path, mode);
#endif
if (stat (path, &stats))
if (stat64 (path, &stats))
return -1;
mode &= (X_OK | W_OK | R_OK); /* Clear any bogus bits. */

View File

@ -1,5 +1,5 @@
/* Determine whether descriptor has given property.
Copyright (C) 1996, 1997 Free Software Foundation, Inc.
Copyright (C) 1996, 1997, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -25,12 +25,12 @@
int
isfdtype (int fildes, int fdtype)
{
struct stat st;
struct stat64 st;
int result;
{
int save_error = errno;
result = fstat (fildes, &st);
result = fstat64 (fildes, &st);
__set_errno (save_error);
}

View File

@ -27,7 +27,7 @@
int
posix_fallocate (int fd, __off_t offset, size_t len)
{
struct stat st;
struct stat64 st;
struct statfs f;
size_t step;
@ -40,7 +40,7 @@ posix_fallocate (int fd, __off_t offset, size_t len)
/* First thing we have to make sure is that this is really a regular
file. */
if (__fxstat (_STAT_VER, fd, &st) != 0)
if (__fxstat64 (_STAT_VER, fd, &st) != 0)
return EBADF;
if (S_ISFIFO (st.st_mode))
return ESPIPE;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991,92,93,94,95,96,97,98,99 Free Software Foundation, Inc.
/* Copyright (C) 1991-1999, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -33,8 +33,8 @@
static int
direxists (const char *dir)
{
struct stat buf;
return __xstat (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
struct stat64 buf;
return __xstat64 (_STAT_VER, dir, &buf) == 0 && S_ISDIR (buf.st_mode);
}
/* Path search algorithm, for tmpnam, tmpfile, etc. If DIR is
@ -127,7 +127,7 @@ __gen_tempname (char *tmpl, int kind)
struct timeval tv;
int count, fd = -1;
int save_errno = errno;
struct stat st;
struct stat64 st;
len = strlen (tmpl);
if (len < 6 || strcmp (&tmpl[len - 6], "XXXXXX"))
@ -179,7 +179,7 @@ __gen_tempname (char *tmpl, int kind)
succeeds if __xstat fails because the name does not exist.
Note the continue to bypass the common logic at the bottom
of the loop. */
if (__xstat (_STAT_VER, tmpl, &st) < 0)
if (__xstat64 (_STAT_VER, tmpl, &st) < 0)
{
if (errno == ENOENT)
{

View File

@ -97,7 +97,7 @@ grantpt (int fd)
char _buf[512];
#endif
char *buf = _buf;
struct stat st;
struct stat64 st;
char *grtmpbuf;
struct group grbuf;
size_t grbuflen = __sysconf (_SC_GETGR_R_SIZE_MAX);
@ -109,7 +109,7 @@ grantpt (int fd)
if (pts_name (fd, &buf, sizeof (_buf)))
return -1;
if (__xstat (_STAT_VER, buf, &st) < 0)
if (__xstat64 (_STAT_VER, buf, &st) < 0)
goto cleanup;
/* Make sure that we own the device. */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1991, 92, 93, 94, 95, 96, 98 Free Software Foundation, Inc.
/* Copyright (C) 1991,92,93,94,95,96,98,2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@ -71,7 +71,7 @@ DIR *
__opendir (const char *name)
{
DIR *dirp;
struct stat statbuf;
struct stat64 statbuf;
int fd;
size_t allocation;
int save_errno;
@ -96,7 +96,7 @@ __opendir (const char *name)
/* We first have to check whether the name is for a directory. We
cannot do this after the open() call since the open/close operation
performed on, say, a tape device might have undesirable effects. */
if (__xstat (_STAT_VER, name, &statbuf) < 0)
if (__xstat64 (_STAT_VER, name, &statbuf) < 0)
return NULL;
if (! S_ISDIR (statbuf.st_mode))
{
@ -111,7 +111,7 @@ __opendir (const char *name)
/* Now make sure this really is a directory and nothing changed since
the `stat' call. */
if (__fstat (fd, &statbuf) < 0)
if (__fxstat64 (_STAT_VER, fd, &statbuf) < 0)
goto lose;
if (! S_ISDIR (statbuf.st_mode))
{

View File

@ -31,13 +31,13 @@ int
fstatvfs (int fd, struct statvfs *buf)
{
struct statfs fsbuf;
struct stat st;
struct stat64 st;
/* Get as much information as possible from the system. */
if (__fstatfs (fd, &fsbuf) < 0)
return -1;
#define STAT(st) fstat (fd, st)
#define STAT(st) fstat64 (fd, st)
#include "internal_statvfs.c"
/* We signal success if the statfs call succeeded. */

View File

@ -56,10 +56,10 @@
while (__getmntent_r (mtab, &mntbuf, tmpbuf, sizeof (tmpbuf)))
{
struct stat fsst;
struct stat64 fsst;
/* Find out about the device the current entry is for. */
if (stat (mntbuf.mnt_dir, &fsst) >= 0
if (stat64 (mntbuf.mnt_dir, &fsst) >= 0
&& st.st_dev == fsst.st_dev)
{
/* Bingo, we found the entry for the device FD is on.

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1998 Free Software Foundation, Inc.
/* Copyright (C) 1998, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Zack Weinberg <zack@rabi.phys.columbia.edu>, 1998.
@ -45,7 +45,7 @@
terminal devices. As of Linux 2.1.115 these are no longer
supported. They have been replaced by major numbers 2 (masters)
and 3 (slaves). */
/* Directory where we can find the slave pty nodes. */
#define _PATH_DEVPTS "/dev/pts/"
@ -74,7 +74,7 @@ int
__ptsname_r (int fd, char *buf, size_t buflen)
{
int save_errno = errno;
struct stat st;
struct stat64 st;
int ptyno;
if (buf == NULL)
@ -121,7 +121,7 @@ __ptsname_r (int fd, char *buf, size_t buflen)
return ERANGE;
}
if (__fstat (fd, &st) < 0)
if (__fxstat64 (_STAT_VER, fd, &st) < 0)
return errno;
/* Check if FD really is a master pseudo terminal. */
@ -149,7 +149,7 @@ __ptsname_r (int fd, char *buf, size_t buflen)
p[2] = '\0';
}
if (__xstat (_STAT_VER, buf, &st) < 0)
if (__xstat64 (_STAT_VER, buf, &st) < 0)
return errno;
/* Check if the name we're about to return really corresponds to a

View File

@ -31,13 +31,13 @@ int
statvfs (const char *file, struct statvfs *buf)
{
struct statfs fsbuf;
struct stat st;
struct stat64 st;
/* Get as much information as possible from the system. */
if (__statfs (file, &fsbuf) < 0)
return -1;
#define STAT(st) stat (file, st)
#define STAT(st) stat64 (file, st)
#include "internal_statvfs.c"
/* We signal success if the statfs call succeeded. */

View File

@ -31,7 +31,7 @@
char *__ttyname;
static char *getttyname (const char *dev, dev_t mydev,
ino_t myino, int save, int *dostat)
ino64_t myino, int save, int *dostat)
internal_function;
@ -39,10 +39,10 @@ static char *getttyname_name;
static char *
internal_function
getttyname (const char *dev, dev_t mydev, ino_t myino, int save, int *dostat)
getttyname (const char *dev, dev_t mydev, ino64_t myino, int save, int *dostat)
{
static size_t namelen;
struct stat st;
struct stat64 st;
DIR *dirstream;
struct dirent *d;
size_t devlen = strlen (dev) + 1;
@ -76,11 +76,11 @@ getttyname (const char *dev, dev_t mydev, ino_t myino, int save, int *dostat)
*((char *) __mempcpy (getttyname_name, dev, devlen - 1)) = '/';
}
memcpy (&getttyname_name[devlen], d->d_name, dlen);
if (__xstat (_STAT_VER, getttyname_name, &st) == 0
if (__xstat64 (_STAT_VER, getttyname_name, &st) == 0
#ifdef _STATBUF_ST_RDEV
&& S_ISCHR (st.st_mode) && st.st_rdev == mydev
#else
&& (ino_t) d->d_fileno == myino && st.st_dev == mydev
&& (ino64_t) d->d_fileno == myino && st.st_dev == mydev
#endif
)
{
@ -108,7 +108,7 @@ ttyname (int fd)
{
static size_t buflen;
char procname[30];
struct stat st, st1;
struct stat64 st, st1;
int dostat = 0;
char *name;
int save = errno;
@ -143,10 +143,10 @@ ttyname (int fd)
return ttyname_buf;
}
if (__fxstat (_STAT_VER, fd, &st) < 0)
if (__fxstat64 (_STAT_VER, fd, &st) < 0)
return NULL;
if (__xstat (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
if (__xstat64 (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
{
#ifdef _STATBUF_ST_RDEV
name = getttyname ("/dev/pts", st.st_rdev, st.st_ino, save, &dostat);

View File

@ -29,15 +29,15 @@
#include <stdio-common/_itoa.h>
static int getttyname_r (char *buf, size_t buflen,
dev_t mydev, ino_t myino, int save,
dev_t mydev, ino64_t myino, int save,
int *dostat) internal_function;
static int
internal_function
getttyname_r (char *buf, size_t buflen, dev_t mydev, ino_t myino,
getttyname_r (char *buf, size_t buflen, dev_t mydev, ino64_t myino,
int save, int *dostat)
{
struct stat st;
struct stat64 st;
DIR *dirstream;
struct dirent *d;
size_t devlen = strlen (buf);
@ -69,11 +69,11 @@ getttyname_r (char *buf, size_t buflen, dev_t mydev, ino_t myino,
cp = __stpncpy (buf + devlen, d->d_name, needed);
cp[0] = '\0';
if (__xstat (_STAT_VER, buf, &st) == 0
if (__xstat64 (_STAT_VER, buf, &st) == 0
#ifdef _STATBUF_ST_RDEV
&& S_ISCHR (st.st_mode) && st.st_rdev == mydev
#else
&& (ino_t) d->d_fileno == myino && st.st_dev == mydev
&& (ino64_t) d->d_fileno == myino && st.st_dev == mydev
#endif
)
{
@ -96,7 +96,7 @@ int
__ttyname_r (int fd, char *buf, size_t buflen)
{
char procname[30];
struct stat st, st1;
struct stat64 st, st1;
int dostat = 0;
int save = errno;
int ret;
@ -136,14 +136,14 @@ __ttyname_r (int fd, char *buf, size_t buflen)
return ERANGE;
}
if (__fxstat (_STAT_VER, fd, &st) < 0)
if (__fxstat64 (_STAT_VER, fd, &st) < 0)
return errno;
/* Prepare the result buffer. */
memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));
buflen -= sizeof ("/dev/pts/") - 1;
if (__xstat (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode))
if (__xstat64 (_STAT_VER, buf, &st1) == 0 && S_ISDIR (st1.st_mode))
{
#ifdef _STATBUF_ST_RDEV
ret = getttyname_r (buf, buflen, st.st_rdev, st.st_ino, save,

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1995, 1996 Free Software Foundation, Inc.
/* Copyright (C) 1995, 1996, 2000 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, August 1995.
@ -25,10 +25,10 @@ ftok (pathname, proj_id)
const char *pathname;
int proj_id;
{
struct stat st;
struct stat64 st;
key_t key;
if (__xstat (_STAT_VER, pathname, &st) < 0)
if (__xstat64 (_STAT_VER, pathname, &st) < 0)
return (key_t) -1;
key = ((st.st_ino & 0xffff) | ((st.st_dev & 0xff) << 16)

View File

@ -23,6 +23,7 @@
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <unistd.h>
#include <sys/stat.h>
#define TM_YEAR_BASE 1900
@ -110,19 +111,22 @@ __getdate_r (const char *string, struct tm *tp)
char *result = NULL;
time_t timer;
struct tm tm;
struct stat st;
struct stat64 st;
int mday_ok = 0;
datemsk = getenv ("DATEMSK");
if (datemsk == NULL || *datemsk == '\0')
return 1;
if (stat (datemsk, &st) < 0)
if (stat64 (datemsk, &st) < 0)
return 3;
if (!S_ISREG (st.st_mode))
return 4;
if (__access (datemsk, R_OK) < 0)
return 2;
/* Open the template file. */
fp = fopen (datemsk, "r");
if (fp == NULL)