|
Ian Kent |
9a5a39 |
autofs-5.0.4 - use CLOEXEC flag for setmntent
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
From: Ian Kent <raven@themaw.net>
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
Update use of CLOEXEC functionality to cover setmntent(3)
|
|
Ian Kent |
9a5a39 |
calls as well.
|
|
Ian Kent |
9a5a39 |
---
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
CHANGELOG | 1 +
|
|
Ian Kent |
9a5a39 |
include/automount.h | 20 ++++++++++++++++++++
|
|
Ian Kent |
9a5a39 |
lib/mounts.c | 8 ++++----
|
|
Ian Kent |
9a5a39 |
3 files changed, 25 insertions(+), 4 deletions(-)
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
--- autofs-5.0.4.orig/CHANGELOG
|
|
Ian Kent |
9a5a39 |
+++ autofs-5.0.4/CHANGELOG
|
|
Ian Kent |
9a5a39 |
@@ -8,6 +8,7 @@
|
|
Ian Kent |
9a5a39 |
- make hash table scale to thousands of entries (Paul Wankadia,
|
|
Ian Kent |
9a5a39 |
Valerie Aurora Henson).
|
|
Ian Kent |
9a5a39 |
- clear the quoted flag after each character from program map input.
|
|
Ian Kent |
9a5a39 |
+- use CLOEXEC flag for setmntent also.
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
4/11/2008 autofs-5.0.4
|
|
Ian Kent |
9a5a39 |
-----------------------
|
|
Ian Kent |
9a5a39 |
--- autofs-5.0.4.orig/include/automount.h
|
|
Ian Kent |
9a5a39 |
+++ autofs-5.0.4/include/automount.h
|
|
Ian Kent |
9a5a39 |
@@ -581,5 +581,25 @@ static inline FILE *open_fopen_r(const c
|
|
Ian Kent |
9a5a39 |
return f;
|
|
Ian Kent |
9a5a39 |
}
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
+static inline FILE *open_setmntent_r(const char *table)
|
|
Ian Kent |
9a5a39 |
+{
|
|
Ian Kent |
9a5a39 |
+ FILE *tab;
|
|
Ian Kent |
9a5a39 |
+
|
|
Ian Kent |
9a5a39 |
+#if defined(O_CLOEXEC) && defined(SOCK_CLOEXEC)
|
|
Ian Kent |
9a5a39 |
+ if (cloexec_works != -1) {
|
|
Ian Kent |
9a5a39 |
+ tab = setmntent(table, "re");
|
|
Ian Kent |
9a5a39 |
+ if (tab != NULL) {
|
|
Ian Kent |
9a5a39 |
+ check_cloexec(fileno(tab));
|
|
Ian Kent |
9a5a39 |
+ return tab;
|
|
Ian Kent |
9a5a39 |
+ }
|
|
Ian Kent |
9a5a39 |
+ }
|
|
Ian Kent |
9a5a39 |
+#endif
|
|
Ian Kent |
9a5a39 |
+ tab = fopen(table, "r");
|
|
Ian Kent |
9a5a39 |
+ if (tab == NULL)
|
|
Ian Kent |
9a5a39 |
+ return NULL;
|
|
Ian Kent |
9a5a39 |
+ check_cloexec(fileno(tab));
|
|
Ian Kent |
9a5a39 |
+ return tab;
|
|
Ian Kent |
9a5a39 |
+}
|
|
Ian Kent |
9a5a39 |
+
|
|
Ian Kent |
9a5a39 |
#endif
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
--- autofs-5.0.4.orig/lib/mounts.c
|
|
Ian Kent |
9a5a39 |
+++ autofs-5.0.4/lib/mounts.c
|
|
Ian Kent |
9a5a39 |
@@ -218,7 +218,7 @@ struct mnt_list *get_mnt_list(const char
|
|
Ian Kent |
9a5a39 |
if (!path || !pathlen || pathlen > PATH_MAX)
|
|
Ian Kent |
9a5a39 |
return NULL;
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
- tab = setmntent(table, "r");
|
|
Ian Kent |
9a5a39 |
+ tab = open_setmntent_r(table);
|
|
Ian Kent |
9a5a39 |
if (!tab) {
|
|
Ian Kent |
9a5a39 |
char *estr = strerror_r(errno, buf, PATH_MAX - 1);
|
|
Ian Kent |
9a5a39 |
logerr("setmntent: %s", estr);
|
|
Ian Kent |
9a5a39 |
@@ -415,7 +415,7 @@ static int table_is_mounted(const char *
|
|
Ian Kent |
9a5a39 |
if (!path || !pathlen || pathlen >= PATH_MAX)
|
|
Ian Kent |
9a5a39 |
return 0;
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
- tab = setmntent(table, "r");
|
|
Ian Kent |
9a5a39 |
+ tab = open_setmntent_r(table);
|
|
Ian Kent |
9a5a39 |
if (!tab) {
|
|
Ian Kent |
9a5a39 |
char *estr = strerror_r(errno, buf, PATH_MAX - 1);
|
|
Ian Kent |
9a5a39 |
logerr("setmntent: %s", estr);
|
|
Ian Kent |
9a5a39 |
@@ -489,7 +489,7 @@ int has_fstab_option(const char *opt)
|
|
Ian Kent |
9a5a39 |
if (!opt)
|
|
Ian Kent |
9a5a39 |
return 0;
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
- tab = setmntent(_PATH_MNTTAB, "r");
|
|
Ian Kent |
9a5a39 |
+ tab = open_setmntent_r(_PATH_MNTTAB);
|
|
Ian Kent |
9a5a39 |
if (!tab) {
|
|
Ian Kent |
9a5a39 |
char *estr = strerror_r(errno, buf, PATH_MAX - 1);
|
|
Ian Kent |
9a5a39 |
logerr("setmntent: %s", estr);
|
|
Ian Kent |
9a5a39 |
@@ -668,7 +668,7 @@ struct mnt_list *tree_make_mnt_tree(cons
|
|
Ian Kent |
9a5a39 |
size_t plen;
|
|
Ian Kent |
9a5a39 |
int eq;
|
|
Ian Kent |
9a5a39 |
|
|
Ian Kent |
9a5a39 |
- tab = setmntent(table, "r");
|
|
Ian Kent |
9a5a39 |
+ tab = open_setmntent_r(table);
|
|
Ian Kent |
9a5a39 |
if (!tab) {
|
|
Ian Kent |
9a5a39 |
char *estr = strerror_r(errno, buf, PATH_MAX - 1);
|
|
Ian Kent |
9a5a39 |
logerr("setmntent: %s", estr);
|