On Thu, 2009-02-12 at 00:48 +0900, Ian Kent wrote: > Update use of CLOEXEC functionality to cover setmntent(3) > calls as well.
Pleas ignore this false start. Oops. > --- > > CHANGELOG | 1 + > include/automount.h | 20 ++++++++++++++++++++ > lib/mounts.c | 8 ++++---- > 3 files changed, 25 insertions(+), 4 deletions(-) > > diff --git a/CHANGELOG b/CHANGELOG > index af77b55..eb4a189 100644 > --- a/CHANGELOG > +++ b/CHANGELOG > @@ -8,6 +8,7 @@ > - make hash table scale to thousands of entries (Paul Wankadia, > Valerie Aurora Henson). > - clear the quoted flag after each character from program map input. > +- use CLOEXEC flag for setmntent also. > > 4/11/2008 autofs-5.0.4 > ----------------------- > diff --git a/include/automount.h b/include/automount.h > index 005d209..46cb6c6 100644 > --- a/include/automount.h > +++ b/include/automount.h > @@ -581,5 +581,25 @@ static inline FILE *open_fopen_r(const char *path) > return f; > } > > +static inline FILE *open_setmntent_r(const char *table) > +{ > + FILE *tab; > + > +#if defined(O_CLOEXEC) && defined(SOCK_CLOEXEC) > + if (cloexec_works != -1) { > + tab = setmntent(table, "re"); > + if (tab != NULL) { > + check_cloexec(fileno(tab)); > + return tab; > + } > + } > +#endif > + tab = fopen(table, "r"); > + if (tab == NULL) > + return NULL; > + check_cloexec(fileno(tab)); > + return tab; > +} > + > #endif > > diff --git a/lib/mounts.c b/lib/mounts.c > index ce4691b..b98e1a4 100644 > --- a/lib/mounts.c > +++ b/lib/mounts.c > @@ -218,7 +218,7 @@ struct mnt_list *get_mnt_list(const char *table, const > char *path, int include) > if (!path || !pathlen || pathlen > PATH_MAX) > return NULL; > > - tab = setmntent(table, "r"); > + tab = open_setmntent_r(table); > if (!tab) { > char *estr = strerror_r(errno, buf, PATH_MAX - 1); > logerr("setmntent: %s", estr); > @@ -415,7 +415,7 @@ static int table_is_mounted(const char *table, const char > *path, unsigned int ty > if (!path || !pathlen || pathlen >= PATH_MAX) > return 0; > > - tab = setmntent(table, "r"); > + tab = open_setmntent_r(table); > if (!tab) { > char *estr = strerror_r(errno, buf, PATH_MAX - 1); > logerr("setmntent: %s", estr); > @@ -489,7 +489,7 @@ int has_fstab_option(const char *opt) > if (!opt) > return 0; > > - tab = setmntent(_PATH_MNTTAB, "r"); > + tab = open_setmntent_r(_PATH_MNTTAB); > if (!tab) { > char *estr = strerror_r(errno, buf, PATH_MAX - 1); > logerr("setmntent: %s", estr); > @@ -668,7 +668,7 @@ struct mnt_list *tree_make_mnt_tree(const char *table, > const char *path) > size_t plen; > int eq; > > - tab = setmntent(table, "r"); > + tab = open_setmntent_r(table); > if (!tab) { > char *estr = strerror_r(errno, buf, PATH_MAX - 1); > logerr("setmntent: %s", estr); > > _______________________________________________ > autofs mailing list > autofs@linux.kernel.org > http://linux.kernel.org/mailman/listinfo/autofs _______________________________________________ autofs mailing list autofs@linux.kernel.org http://linux.kernel.org/mailman/listinfo/autofs