From b1eedfcfa1d2281b2e1b8773ab0130c5196b4505 Mon Sep 17 00:00:00 2001 From: Denys Vlasenko Date: Sat, 5 Dec 2020 14:14:11 +0100 Subject: mount: do not guess mount as NFS if "hostname:" contains slashes function old new delta singlemount 1273 1295 +22 Signed-off-by: Denys Vlasenko --- util-linux/mount.c | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) (limited to 'util-linux/mount.c') diff --git a/util-linux/mount.c b/util-linux/mount.c index dba583544..7625d8424 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -2064,14 +2064,18 @@ static int singlemount(struct mntent *mp, int ignore_busy) } // Might this be an NFS filesystem? - if ((!mp->mnt_type || is_prefixed_with(mp->mnt_type, "nfs")) - && strchr(mp->mnt_fsname, ':') != NULL - && !(vfsflags & (MS_REMOUNT | MS_BIND | MS_MOVE)) + if (!(vfsflags & (MS_BIND | MS_MOVE)) + && (!mp->mnt_type || is_prefixed_with(mp->mnt_type, "nfs")) ) { - if (!mp->mnt_type) - mp->mnt_type = (char*)"nfs"; - rc = nfsmount(mp, vfsflags, filteropts); - goto report_error; + char *colon = strchr(mp->mnt_fsname, ':'); + if (colon /* looks like "hostname:..." */ + && strchrnul(mp->mnt_fsname, '/') > colon /* "hostname:" has no slashes */ + ) { + if (!mp->mnt_type) + mp->mnt_type = (char*)"nfs"; + rc = nfsmount(mp, vfsflags, filteropts); + goto report_error; + } } // Look at the file. (Not found isn't a failure for remount, or for -- cgit v1.2.3