Blame SOURCES/autofs-5.1.7-fix-is-mounted-check-on-non-existent-path.patch

29d2b9
autofs-5.1.7 - fix is mounted check on non existent path
29d2b9
29d2b9
From: Ian Kent <raven@themaw.net>
29d2b9
29d2b9
When checking if a path is a mount point the case of a non-existent path
29d2b9
was not being handled.
29d2b9
29d2b9
Signed-off-by: Ian Kent <raven@themaw.net>
29d2b9
---
29d2b9
 CHANGELOG           |    1 +
29d2b9
 lib/dev-ioctl-lib.c |    3 +++
29d2b9
 lib/mounts.c        |   12 +++++++++++-
29d2b9
 3 files changed, 15 insertions(+), 1 deletion(-)
29d2b9
29d2b9
diff --git a/CHANGELOG b/CHANGELOG
29d2b9
index 484bd866..e55fd66a 100644
29d2b9
--- a/CHANGELOG
29d2b9
+++ b/CHANGELOG
29d2b9
@@ -6,6 +6,7 @@
29d2b9
 - fix mnts_remove_amdmount() uses wrong list.
29d2b9
 - Fix option for master read wait.
29d2b9
 - eliminate cache_lookup_offset() usage.
29d2b9
+- fix is mounted check on non existent path.
29d2b9
 
29d2b9
 25/01/2021 autofs-5.1.7
29d2b9
 - make bind mounts propagation slave by default.
29d2b9
diff --git a/lib/dev-ioctl-lib.c b/lib/dev-ioctl-lib.c
29d2b9
index e8519236..7040c3da 100644
29d2b9
--- a/lib/dev-ioctl-lib.c
29d2b9
+++ b/lib/dev-ioctl-lib.c
29d2b9
@@ -759,6 +759,9 @@ static int dev_ioctl_ismountpoint(unsigned int logopt,
29d2b9
 		int save_errno = errno;
29d2b9
 		free_dev_ioctl_path(param);
29d2b9
 		errno = save_errno;
29d2b9
+		/* Path doesn't exist */
29d2b9
+		if (errno == ENOENT)
29d2b9
+			return 0;
29d2b9
 		return -1;
29d2b9
 	}
29d2b9
 
29d2b9
diff --git a/lib/mounts.c b/lib/mounts.c
29d2b9
index 42e8ef07..fe931b20 100644
29d2b9
--- a/lib/mounts.c
29d2b9
+++ b/lib/mounts.c
29d2b9
@@ -1649,8 +1649,18 @@ static int table_is_mounted(const char *mp, unsigned int type)
29d2b9
 	struct mntent mnt_wrk;
29d2b9
 	char buf[PATH_MAX * 3];
29d2b9
 	size_t mp_len = strlen(mp);
29d2b9
+	struct stat st;
29d2b9
 	FILE *tab;
29d2b9
-	int ret = 0;
29d2b9
+	int ret;
29d2b9
+
29d2b9
+	ret = stat(mp, &st);
29d2b9
+	if (ret == -1) {
29d2b9
+		if (errno == ENOENT) {
29d2b9
+			/* Path does not exist */
29d2b9
+			return 0;
29d2b9
+		}
29d2b9
+		ret = 0;
29d2b9
+	}
29d2b9
 
29d2b9
 	if (!mp || !mp_len || mp_len >= PATH_MAX)
29d2b9
 		return 0;