Blob Blame History Raw
autofs-5.0.6 - check if /etc/mtab is a link to /proc/self/mounts

From: Leonardo Chiquitto <leonardo.lists@gmail.com>

Check if /etc/mtab is a link to /proc/self/mounts

Some distributions link /etc/mtab to /proc/self/mounts instead
of /proc/mounts.
---

 CHANGELOG           |    1 +
 daemon/spawn.c      |    9 ++++++---
 include/automount.h |    3 ++-
 3 files changed, 9 insertions(+), 4 deletions(-)


--- autofs-5.0.6.orig/CHANGELOG
+++ autofs-5.0.6/CHANGELOG
@@ -48,6 +48,7 @@
 - move timeout to map_source (allow per direct map timeout).
 - fix kernel verion check of version components.
 - dont retry ldap connect if not required.
+- check if /etc/mtab is a link to /proc/self/mounts.
 
 28/06/2011 autofs-5.0.6
 -----------------------
--- autofs-5.0.6.orig/daemon/spawn.c
+++ autofs-5.0.6/daemon/spawn.c
@@ -336,7 +336,8 @@ int spawn_mount(unsigned logopt, ...)
 	ret = readlink(_PATH_MOUNTED, buf, PATH_MAX);
 	if (ret != -1) {
 		buf[ret] = '\0';
-		if (!strcmp(buf, _PROC_MOUNTS)) {
+		if (!strcmp(buf, _PROC_MOUNTS) ||
+		    !strcmp(buf, _PROC_SELF_MOUNTS)) {
 			debug(logopt,
 			      "mtab link detected, passing -n to mount");
 			argc++;
@@ -467,7 +468,8 @@ int spawn_bind_mount(unsigned logopt, ..
 	ret = readlink(_PATH_MOUNTED, buf, PATH_MAX);
 	if (ret != -1) {
 		buf[ret] = '\0';
-		if (!strcmp(buf, _PROC_MOUNTS)) {
+		if (!strcmp(buf, _PROC_MOUNTS) ||
+		    !strcmp(buf, _PROC_SELF_MOUNTS)) {
 			debug(logopt,
 			      "mtab link detected, passing -n to mount");
 			argc++;
@@ -569,7 +571,8 @@ int spawn_umount(unsigned logopt, ...)
 	ret = readlink(_PATH_MOUNTED, buf, PATH_MAX);
 	if (ret != -1) {
 		buf[ret] = '\0';
-		if (!strcmp(buf, _PROC_MOUNTS)) {
+		if (!strcmp(buf, _PROC_MOUNTS) ||
+		    !strcmp(buf, _PROC_SELF_MOUNTS)) {
 			debug(logopt,
 			      "mtab link detected, passing -n to mount");
 			argc++;
--- autofs-5.0.6.orig/include/automount.h
+++ autofs-5.0.6/include/automount.h
@@ -84,7 +84,8 @@ int load_autofs4_module(void);
 #define MTAB_NOTUPDATED 0x1000			/* mtab succeded but not updated */
 #define NOT_MOUNTED     0x0100			/* path notmounted */
 #define MNT_FORCE_FAIL	-1
-#define _PROC_MOUNTS	"/proc/mounts"
+#define _PROC_MOUNTS		"/proc/mounts"
+#define _PROC_SELF_MOUNTS	"/proc/self/mounts"
 
 /* Constants for lookup modules */