autofs-5.0.4 - use intr option as hosts mount default
From: Ian Kent <raven@themaw.net>
Use the "intr" option as default mount option for the hosts map
unless explicily overridden.
---
CHANGELOG | 1 +
man/auto.master.5.in | 5 +++--
modules/parse_sun.c | 11 +++++++----
3 files changed, 11 insertions(+), 6 deletions(-)
diff --git a/CHANGELOG b/CHANGELOG
index 8258e00..a42dd14 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -41,6 +41,7 @@
- reset flex scanner when setting buffer.
- zero s_magic is valid.
- use percent hack for master map keys.
+- use intr option as hosts mount default.
4/11/2008 autofs-5.0.4
-----------------------
diff --git a/man/auto.master.5.in b/man/auto.master.5.in
index aaa6324..7b7004f 100644
--- a/man/auto.master.5.in
+++ b/man/auto.master.5.in
@@ -208,8 +208,9 @@ For example, with an entry in the master map of
accessing /net/myserver will mount exports from myserver on directories below
/net/myserver.
.P
-NOTE: mounts done from a hosts map will be mounted with the "nosuid" and "nodev" options
-unless the options "suid" and "dev" are explicitly given in the master map entry.
+NOTE: mounts done from a hosts map will be mounted with the "nosuid,nodev,intr" options
+unless overridden by explicily specifying the "suid", "dev" or "nointr" options in the
+master map entry.
.SH LDAP MAPS
If the map type \fBldap\fP is specified the mapname is of the form
\fB[//servername/]dn\fP, where the optional \fBservername\fP is
diff --git a/modules/parse_sun.c b/modules/parse_sun.c
index 65417e1..db36ae2 100644
--- a/modules/parse_sun.c
+++ b/modules/parse_sun.c
@@ -607,9 +607,10 @@ static int sun_mount(struct autofs_point *ap, const char *root,
int len = strlen(options);
int suid = strstr(options, "suid") ? 0 : 7;
int dev = strstr(options, "dev") ? 0 : 6;
+ int nointr = strstr(options, "nointr") ? 0 : 5;
- if (suid || dev) {
- char *tmp = alloca(len + suid + dev + 1);
+ if (suid || dev || nointr) {
+ char *tmp = alloca(len + suid + dev + nointr + 1);
if (!tmp) {
error(ap->logopt, MODPREFIX
"alloca failed for options");
@@ -623,10 +624,12 @@ static int sun_mount(struct autofs_point *ap, const char *root,
strcat(tmp, ",nosuid");
if (dev)
strcat(tmp, ",nodev");
+ if (nointr)
+ strcat(tmp, ",intr");
options = tmp;
}
} else {
- char *tmp = alloca(13);
+ char *tmp = alloca(18);
if (!tmp) {
error(ap->logopt,
MODPREFIX "alloca failed for options");
@@ -634,7 +637,7 @@ static int sun_mount(struct autofs_point *ap, const char *root,
return -1;
return 1;
}
- strcpy(tmp, "nosuid,nodev");
+ strcpy(tmp, "nosuid,nodev,intr");
options = tmp;
}
}