1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-07-29 11:41:21 +03:00

Clean up internal fopen uses

No need to ever not use c and e.
This commit is contained in:
Ulrich Drepper
2011-11-15 04:24:42 -05:00
parent 82af0fa8de
commit 312be3f9f5
27 changed files with 117 additions and 46 deletions

View File

@ -1,3 +1,68 @@
2011-11-15 Ulrich Drepper <drepper@gmail.com>
* time/getdate.c (__getdate_r): Set FD_CLOEXEC for given file.
* sysdeps/unix/sysv/linux/readonly-area.c (__readonly_area): Set
FD_CLOEXEC for /proc/self/maps.
* sysdeps/unix/sysv/linux/getsysstats.c (phys_pages_info): Set
FD_CLOEXEC for /proc/meminfo.
* sysdeps/posix/getaddrinfo.c (gaiconf_init): Set FD_CLOEXEC for
gai.conf.
* resolv/res_query.c (res_hostalias): Don't allow cancellation and set
FD_CLOEXEC for given file.
* resolv/res_hconf.c (do_init): Set FD_CLOEXEC for host.conf.
* resolv/gethnamaddr.c (_sethtent): Don't allow cancellation and set
FD_CLOEXEC for /etc/hosts.
(_gethtent): Likewise.
* nss/nsswitch.c (nss_parse_file): Set FD_CLOEXEC.
* nss/nss_files/files-netgrp.c (_nss_files_setnetgrent): Don't allow
cancellation and set FD_CLOEXEC for /etc/netgroup.
* nss/nss_files/files-key.c (search): Don't allow cancellation when
reading /etc/publickey.
* nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn): Don't
allow cancellation when reading /etc/group.
* nss/nss_files/files-alias.c (internal_setent): Don't allow
cancellation.
(get_next_alias): Likewise for included file. Also set FD_CLOEXEC.
* nss/nss_files/files-XXX.c (internal_setent): Don't allow cancellation
when using data file.
* nis/nss-default.c (init): Set FD_CLOEXEC for /etc/default/nss.
* nis/nis_file.c (read_nis_obj): Set FD_CLOEXEC.
(write_nis_obj): Use "c" and "e" in fopen.
* misc/mntent_r.c (__setmntent): Also append e to fopen format.
* misc/getusershell.c (initshells): Set FD_CLOEXEC for /etc/shells.
* misc/getttyent.c (setttyent): Set FD_CLOEXEC.
* misc/getpass.c (getpass): Set FD_CLOEXEC for /dev/tty.
* intl/localealias.c (read_alias_file): Set FD_CLOEXEC for
locale.alias.
* inet/ruserpass.c (ruserpass): Set FD_CLOEXEC for .netrc.
* inet/rcmd.c (iruserfopen): Set FD_CLOEXEC for hosts.equiv.
* iconv/gconv_conf.c (read_conf_file): Set FD_CLOEXEC for config file.
* hesiod/hesiod.c (parse_config_file): Prevent cancellation in config
file parsing and set FD_CLOEXEC.
2011-11-14 Ulrich Drepper <drepper@gmail.com> 2011-11-14 Ulrich Drepper <drepper@gmail.com>
* time/tzfile.c (__tzfile_read): Use "e" in fopen call. * time/tzfile.c (__tzfile_read): Use "e" in fopen call.

View File

@ -278,7 +278,7 @@ parse_config_file(struct hesiod_p *ctx, const char *filename) {
/* /*
* Now open and parse the file... * Now open and parse the file...
*/ */
if (!(fp = fopen(filename, "r"))) if (!(fp = fopen(filename, "rce")))
return (-1); return (-1);
while (fgets(buf, sizeof(buf), fp) != NULL) { while (fgets(buf, sizeof(buf), fp) != NULL) {
@ -482,7 +482,7 @@ __hesiod_res_get(void *context) {
void void
__hesiod_res_set(void *context, struct __res_state *res, __hesiod_res_set(void *context, struct __res_state *res,
void (*free_res)(void *)) { void (*free_res)(void *)) {
struct hesiod_p *ctx = context; struct hesiod_p *ctx = context;
if (ctx->res && ctx->free_res) { if (ctx->res && ctx->free_res) {

View File

@ -364,7 +364,7 @@ read_conf_file (const char *filename, const char *directory, size_t dir_len,
{ {
/* Note the file is opened with cancellation in the I/O functions /* Note the file is opened with cancellation in the I/O functions
disabled. */ disabled. */
FILE *fp = fopen (filename, "rc"); FILE *fp = fopen (filename, "rce");
char *line = NULL; char *line = NULL;
size_t line_len = 0; size_t line_len = 0;
static int modcounter; static int modcounter;

View File

@ -149,7 +149,7 @@ rcmd_af(ahost, rport, locuser, remuser, cmd, fd2p, af)
__fxprintf(NULL, "rcmd: getaddrinfo: %s\n", __fxprintf(NULL, "rcmd: getaddrinfo: %s\n",
gai_strerror(error)); gai_strerror(error));
return -1; return -1;
} }
pfd[0].events = POLLIN; pfd[0].events = POLLIN;
@ -488,7 +488,7 @@ iruserfopen (const char *file, uid_t okuser)
cp = _("not regular file"); cp = _("not regular file");
else else
{ {
res = fopen (file, "rc"); res = fopen (file, "rce");
if (!res) if (!res)
cp = _("cannot open"); cp = _("cannot open");
else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0) else if (__fxstat64 (_STAT_VER, fileno (res), &st) < 0)
@ -574,8 +574,8 @@ ruserok2_sa (ra, ralen, superuser, ruser, luser, rhost)
if (hostf != NULL) if (hostf != NULL)
{ {
isbad = __validuser2_sa (hostf, ra, ralen, luser, ruser, rhost); isbad = __validuser2_sa (hostf, ra, ralen, luser, ruser, rhost);
fclose (hostf); fclose (hostf);
} }
seteuid (uid); seteuid (uid);
@ -618,7 +618,7 @@ iruserok_af (raddr, superuser, ruser, luser, af)
case AF_INET6: case AF_INET6:
ra.ss_family = AF_INET6; ra.ss_family = AF_INET6;
memcpy (&(((struct sockaddr_in6 *)&ra)->sin6_addr), raddr, memcpy (&(((struct sockaddr_in6 *)&ra)->sin6_addr), raddr,
sizeof(struct in6_addr)); sizeof(struct in6_addr));
ralen = sizeof(struct sockaddr_in6); ralen = sizeof(struct sockaddr_in6);
break; break;
default: default:
@ -778,7 +778,7 @@ __validuser2_sa(hostf, ra, ralen, luser, ruser, rhost)
while (__getline (&buf, &bufsize, hostf) > 0) { while (__getline (&buf, &bufsize, hostf) > 0) {
buf[bufsize - 1] = '\0'; /* Make sure it's terminated. */ buf[bufsize - 1] = '\0'; /* Make sure it's terminated. */
p = buf; p = buf;
/* Skip empty or comment lines */ /* Skip empty or comment lines */
if (__isempty (p)) { if (__isempty (p)) {

View File

@ -114,7 +114,7 @@ ruserpass(host, aname, apass)
buf = alloca (strlen (hdir) + 8); buf = alloca (strlen (hdir) + 8);
__stpcpy (__stpcpy (buf, hdir), "/.netrc"); __stpcpy (__stpcpy (buf, hdir), "/.netrc");
cfile = fopen(buf, "rc"); cfile = fopen(buf, "rce");
if (cfile == NULL) { if (cfile == NULL) {
if (errno != ENOENT) if (errno != ENOENT)
warn("%s", buf); warn("%s", buf);

View File

@ -221,7 +221,7 @@ read_alias_file (fname, fname_len)
/* Note the file is opened with cancellation in the I/O functions /* Note the file is opened with cancellation in the I/O functions
disabled. */ disabled. */
fp = fopen (full_fname, "rc"); fp = fopen (full_fname, "rce");
freea (full_fname); freea (full_fname);
if (fp == NULL) if (fp == NULL)
return 0; return 0;

View File

@ -1,4 +1,4 @@
/* Copyright (C) 1992-1999,2001,2003,2004,2005 Free Software Foundation, Inc. /* Copyright (C) 1992-1999,2001,2003-2005,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -57,7 +57,7 @@ getpass (prompt)
/* Try to write to and read from the terminal if we can. /* Try to write to and read from the terminal if we can.
If we can't open the terminal, use stderr and stdin. */ If we can't open the terminal, use stderr and stdin. */
in = fopen ("/dev/tty", "w+c"); in = fopen ("/dev/tty", "w+ce");
if (in == NULL) if (in == NULL)
{ {
in = stdin; in = stdin;

View File

@ -190,7 +190,7 @@ setttyent()
if (tf) { if (tf) {
(void)rewind(tf); (void)rewind(tf);
return (1); return (1);
} else if ((tf = fopen(_PATH_TTYS, "rc"))) { } else if ((tf = fopen(_PATH_TTYS, "rce"))) {
/* We do the locking ourselves. */ /* We do the locking ourselves. */
__fsetlocking (tf, FSETLOCKING_BYCALLER); __fsetlocking (tf, FSETLOCKING_BYCALLER);
return (1); return (1);

View File

@ -104,7 +104,7 @@ initshells()
shells = NULL; shells = NULL;
free(strings); free(strings);
strings = NULL; strings = NULL;
if ((fp = fopen(_PATH_SHELLS, "rc")) == NULL) if ((fp = fopen(_PATH_SHELLS, "rce")) == NULL)
goto init_okshells_noclose; goto init_okshells_noclose;
if (fstat64(fileno(fp), &statb) == -1) { if (fstat64(fileno(fp), &statb) == -1) {
init_okshells: init_okshells:

View File

@ -38,10 +38,10 @@ FILE *
__setmntent (const char *file, const char *mode) __setmntent (const char *file, const char *mode)
{ {
/* Extend the mode parameter with "c" to disable cancellation in the /* Extend the mode parameter with "c" to disable cancellation in the
I/O functions. */ I/O functions and "e" to set FD_CLOEXEC. */
size_t modelen = strlen (mode); size_t modelen = strlen (mode);
char newmode[modelen + 2]; char newmode[modelen + 3];
memcpy (mempcpy (newmode, mode, modelen), "c", 2); memcpy (mempcpy (newmode, mode, modelen), "ce", 3);
FILE *result = fopen (file, newmode); FILE *result = fopen (file, newmode);
if (result != NULL) if (result != NULL)

View File

@ -1,4 +1,4 @@
/* Copyright (c) 1997, 1998, 1999, 2004, 2005 Free Software Foundation, Inc. /* Copyright (c) 1997, 1998, 1999, 2004, 2005, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997. Contributed by Thorsten Kukuk <kukuk@suse.de>, 1997.
@ -31,7 +31,7 @@ static void *
read_nis_obj (const char *name, iofct_t readfct, freefct_t freefct, read_nis_obj (const char *name, iofct_t readfct, freefct_t freefct,
size_t objsize) size_t objsize)
{ {
FILE *in = fopen (name, "rc"); FILE *in = fopen (name, "rce");
if (in == NULL) if (in == NULL)
return NULL; return NULL;
@ -59,7 +59,7 @@ read_nis_obj (const char *name, iofct_t readfct, freefct_t freefct,
static bool_t static bool_t
write_nis_obj (const char *name, const void *obj, iofct_t writefct) write_nis_obj (const char *name, const void *obj, iofct_t writefct)
{ {
FILE *out = fopen (name, "w"); FILE *out = fopen (name, "wce");
if (out == NULL) if (out == NULL)
return FALSE; return FALSE;

View File

@ -1,4 +1,5 @@
/* Copyright (C) 1996,2001,2004,2006,2007,2010 Free Software Foundation, Inc. /* Copyright (C) 1996,2001,2004,2006,2007,2010,2011
Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -57,7 +58,7 @@ static void
init (void) init (void)
{ {
int saved_errno = errno; int saved_errno = errno;
FILE *fp = fopen (default_nss, "rc"); FILE *fp = fopen (default_nss, "rce");
if (fp != NULL) if (fp != NULL)
{ {
char *line = NULL; char *line = NULL;

View File

@ -1,3 +1,8 @@
2011-11-15 Ulrich Drepper <drepper@gmail.com>
* pthread_getattr_np.c (pthread_getattr_np): Set FD_CLOEXEC for
/proc/self/maps.
2011-10-29 Ulrich Drepper <drepper@gmail.com> 2011-10-29 Ulrich Drepper <drepper@gmail.com>
[BZ #13358] [BZ #13358]

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2002, 2003, 2004, 2006, 2007 Free Software Foundation, Inc. /* Copyright (C) 2002-2004, 2006, 2007, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002. Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
@ -75,7 +75,7 @@ pthread_getattr_np (thread_id, attr)
/* The safest way to get the top of the stack is to read /* The safest way to get the top of the stack is to read
/proc/self/maps and locate the line into which /proc/self/maps and locate the line into which
__libc_stack_end falls. */ __libc_stack_end falls. */
FILE *fp = fopen ("/proc/self/maps", "rc"); FILE *fp = fopen ("/proc/self/maps", "rce");
if (fp == NULL) if (fp == NULL)
ret = errno; ret = errno;
/* We need the limit of the stack in any case. */ /* We need the limit of the stack in any case. */
@ -164,7 +164,7 @@ pthread_getattr_np (thread_id, attr)
{ {
free (cpuset); free (cpuset);
if (ret == ENOSYS) if (ret == ENOSYS)
{ {
/* There is no such functionality. */ /* There is no such functionality. */
ret = 0; ret = 0;
iattr->cpuset = NULL; iattr->cpuset = NULL;

View File

@ -77,7 +77,7 @@ internal_setent (int stayopen)
if (stream == NULL) if (stream == NULL)
{ {
stream = fopen (DATAFILE, "re"); stream = fopen (DATAFILE, "rce");
if (stream == NULL) if (stream == NULL)
status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;

View File

@ -48,7 +48,7 @@ internal_setent (void)
if (stream == NULL) if (stream == NULL)
{ {
stream = fopen ("/etc/aliases", "re"); stream = fopen ("/etc/aliases", "rce");
if (stream == NULL) if (stream == NULL)
status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
@ -258,7 +258,7 @@ get_next_alias (const char *match, struct aliasent *result,
first_unused = cp; first_unused = cp;
listfile = fopen (&cp[9], "r"); listfile = fopen (&cp[9], "rce");
/* If the file does not exist we simply ignore /* If the file does not exist we simply ignore
the statement. */ the statement. */
if (listfile != NULL if (listfile != NULL

View File

@ -30,7 +30,7 @@ _nss_files_initgroups_dyn (const char *user, gid_t group, long int *start,
long int *size, gid_t **groupsp, long int limit, long int *size, gid_t **groupsp, long int limit,
int *errnop) int *errnop)
{ {
FILE *stream = fopen ("/etc/group", "re"); FILE *stream = fopen ("/etc/group", "rce");
if (stream == NULL) if (stream == NULL)
{ {
*errnop = errno; *errnop = errno;

View File

@ -33,7 +33,7 @@ extern int xdecrypt (char *, char *);
static enum nss_status static enum nss_status
search (const char *netname, char *result, int *errnop, int secret) search (const char *netname, char *result, int *errnop, int secret)
{ {
FILE *stream = fopen (DATAFILE, "re"); FILE *stream = fopen (DATAFILE, "rce");
if (stream == NULL) if (stream == NULL)
return errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; return errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;

View File

@ -1,5 +1,5 @@
/* Netgroup file parser in nss_files modules. /* Netgroup file parser in nss_files modules.
Copyright (C) 1996, 1997, 2000, 2004, 2005 Free Software Foundation, Inc. Copyright (C) 1996, 1997, 2000, 2004, 2005, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
@ -63,7 +63,7 @@ _nss_files_setnetgrent (const char *group, struct __netgrent *result)
return NSS_STATUS_UNAVAIL; return NSS_STATUS_UNAVAIL;
/* Find the netgroups file and open it. */ /* Find the netgroups file and open it. */
fp = fopen (DATAFILE, "r"); fp = fopen (DATAFILE, "rce");
if (fp == NULL) if (fp == NULL)
status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL; status = errno == EAGAIN ? NSS_STATUS_TRYAGAIN : NSS_STATUS_UNAVAIL;
else else

View File

@ -503,7 +503,7 @@ nss_parse_file (const char *fname)
size_t len; size_t len;
/* Open the configuration file. */ /* Open the configuration file. */
fp = fopen (fname, "rc"); fp = fopen (fname, "rce");
if (fp == NULL) if (fp == NULL)
return NULL; return NULL;

View File

@ -585,7 +585,7 @@ gethostbyname2(name, af)
} }
if (!isdigit(*cp) && *cp != '.') if (!isdigit(*cp) && *cp != '.')
break; break;
} }
if ((isxdigit(name[0]) && strchr(name, ':') != NULL) || if ((isxdigit(name[0]) && strchr(name, ':') != NULL) ||
name[0] == ':') name[0] == ':')
for (cp = name;; ++cp) { for (cp = name;; ++cp) {
@ -787,7 +787,7 @@ _sethtent(f)
int f; int f;
{ {
if (!hostf) if (!hostf)
hostf = fopen(_PATH_HOSTS, "r" ); hostf = fopen(_PATH_HOSTS, "rce" );
else else
rewind(hostf); rewind(hostf);
stayopen = f; stayopen = f;
@ -810,7 +810,7 @@ _gethtent()
register char *cp, **q; register char *cp, **q;
int af, len; int af, len;
if (!hostf && !(hostf = fopen(_PATH_HOSTS, "r" ))) { if (!hostf && !(hostf = fopen(_PATH_HOSTS, "rce" ))) {
__set_h_errno (NETDB_INTERNAL); __set_h_errno (NETDB_INTERNAL);
return (NULL); return (NULL);
} }

View File

@ -307,7 +307,7 @@ do_init (void)
if (hconf_name == NULL) if (hconf_name == NULL)
hconf_name = _PATH_HOSTCONF; hconf_name = _PATH_HOSTCONF;
fp = fopen (hconf_name, "rc"); fp = fopen (hconf_name, "rce");
if (fp) if (fp)
{ {
/* No threads using this stream. */ /* No threads using this stream. */

View File

@ -602,7 +602,7 @@ res_hostalias(const res_state statp, const char *name, char *dst, size_t siz) {
if (statp->options & RES_NOALIASES) if (statp->options & RES_NOALIASES)
return (NULL); return (NULL);
file = getenv("HOSTALIASES"); file = getenv("HOSTALIASES");
if (file == NULL || (fp = fopen(file, "r")) == NULL) if (file == NULL || (fp = fopen(file, "rce")) == NULL)
return (NULL); return (NULL);
setbuf(fp, NULL); setbuf(fp, NULL);
buf[sizeof(buf) - 1] = '\0'; buf[sizeof(buf) - 1] = '\0';

View File

@ -1958,7 +1958,7 @@ gaiconf_init (void)
size_t nscopelist = 0; size_t nscopelist = 0;
bool scopelist_nullbits = false; bool scopelist_nullbits = false;
FILE *fp = fopen (GAICONF_FNAME, "rc"); FILE *fp = fopen (GAICONF_FNAME, "rce");
if (fp != NULL) if (fp != NULL)
{ {
struct stat64 st; struct stat64 st;

View File

@ -296,7 +296,7 @@ phys_pages_info (const char *format)
long int result = -1; long int result = -1;
/* If we haven't found an appropriate entry return 1. */ /* If we haven't found an appropriate entry return 1. */
FILE *fp = fopen ("/proc/meminfo", "rc"); FILE *fp = fopen ("/proc/meminfo", "rce");
if (fp != NULL) if (fp != NULL)
{ {
/* No threads use this stream. */ /* No threads use this stream. */

View File

@ -1,4 +1,4 @@
/* Copyright (C) 2004, 2005 Free Software Foundation, Inc. /* Copyright (C) 2004, 2005, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or The GNU C Library is free software; you can redistribute it and/or
@ -32,7 +32,7 @@ __readonly_area (const char *ptr, size_t size)
{ {
const void *ptr_end = ptr + size; const void *ptr_end = ptr + size;
FILE *fp = fopen ("/proc/self/maps", "rc"); FILE *fp = fopen ("/proc/self/maps", "rce");
if (fp == NULL) if (fp == NULL)
{ {
/* It is the system administrator's choice to not have /proc /* It is the system administrator's choice to not have /proc

View File

@ -1,5 +1,5 @@
/* Convert a string representation of time to a time value. /* Convert a string representation of time to a time value.
Copyright (C) 1997,1998,1999,2000,2001,2003 Free Software Foundation, Inc. Copyright (C) 1997-2001,2003,2011 Free Software Foundation, Inc.
This file is part of the GNU C Library. This file is part of the GNU C Library.
Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997. Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 1997.
@ -44,7 +44,7 @@ static int check_mday (int year, int mon, int mday);
6 memory allication failed (not enough memory available), 6 memory allication failed (not enough memory available),
7 there is no line in the template that matches the input, 7 there is no line in the template that matches the input,
8 invalid input specification Example: February 31 or a time is 8 invalid input specification Example: February 31 or a time is
specified that can not be represented in a time_t (representing specified that can not be represented in a time_t (representing
the time in seconds since 00:00:00 UTC, January 1, 1970) */ the time in seconds since 00:00:00 UTC, January 1, 1970) */
int getdate_err; int getdate_err;
@ -129,7 +129,7 @@ __getdate_r (const char *string, struct tm *tp)
return 2; return 2;
/* Open the template file. */ /* Open the template file. */
fp = fopen (datemsk, "rc"); fp = fopen (datemsk, "rce");
if (fp == NULL) if (fp == NULL)
return 2; return 2;