From 406ea15e2c108c949f8b1a3547eecf4dd9509724 Mon Sep 17 00:00:00 2001 From: Martin Santesson Date: Wed, 16 Jan 2013 00:47:19 +0100 Subject: mount: add unc option to CIFS mount (needed for Linux 3.4+) unc option for CIFS mount is mandatory after CIFS option parsing was rewritten in Linux 3.4 Signed-off-by: Martin Santesson Signed-off-by: Denys Vlasenko --- util-linux/mount.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/util-linux/mount.c b/util-linux/mount.c index bcb298c..d473fd0 100644 --- a/util-linux/mount.c +++ b/util-linux/mount.c @@ -1822,10 +1822,24 @@ static int singlemount(struct mntent *mp, int ignore_busy) hostname = mp->mnt_fsname + 2; len = strcspn(hostname, "/\\"); - if (len == 0 || hostname[len] == '\0') + if (len == 0 // 1st char is a [back]slash (IOW: empty hostname) + || hostname[len] == '\0' // no [back]slash after hostname + || hostname[len+1] == '\0' // empty share name + ) { goto report_error; + } c = hostname[len]; hostname[len] = '\0'; + + // "unc=\\hostname\share" option is mandatory + // after CIFS option parsing was rewritten in Linux 3.4. + // Must pass it to the kernel. Must use backslashes. + { + char *unc = xasprintf("unc=\\\\%s\\%s", hostname, hostname + len + 1); + parse_mount_options(unc, &filteropts); + if (ENABLE_FEATURE_CLEAN_UP) free(unc); + } + lsa = host2sockaddr(hostname, 0); hostname[len] = c; if (!lsa) -- cgit v1.1