aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Santesson <martinsn@axis.com>2013-01-16 00:47:19 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2013-01-16 00:47:19 +0100
commit406ea15e2c108c949f8b1a3547eecf4dd9509724 (patch)
tree61e9b50dbe9f25aa39b13c872cdd5743912b2715
parent970aa6b5bd95e435e537d123ec8be99c3077af1b (diff)
downloadbusybox-w32-406ea15e2c108c949f8b1a3547eecf4dd9509724.tar.gz
busybox-w32-406ea15e2c108c949f8b1a3547eecf4dd9509724.tar.bz2
busybox-w32-406ea15e2c108c949f8b1a3547eecf4dd9509724.zip
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 <martinsn@axis.com> Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--util-linux/mount.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/util-linux/mount.c b/util-linux/mount.c
index bcb298c07..d473fd0a1 100644
--- a/util-linux/mount.c
+++ b/util-linux/mount.c
@@ -1822,10 +1822,24 @@ static int singlemount(struct mntent *mp, int ignore_busy)
1822 1822
1823 hostname = mp->mnt_fsname + 2; 1823 hostname = mp->mnt_fsname + 2;
1824 len = strcspn(hostname, "/\\"); 1824 len = strcspn(hostname, "/\\");
1825 if (len == 0 || hostname[len] == '\0') 1825 if (len == 0 // 1st char is a [back]slash (IOW: empty hostname)
1826 || hostname[len] == '\0' // no [back]slash after hostname
1827 || hostname[len+1] == '\0' // empty share name
1828 ) {
1826 goto report_error; 1829 goto report_error;
1830 }
1827 c = hostname[len]; 1831 c = hostname[len];
1828 hostname[len] = '\0'; 1832 hostname[len] = '\0';
1833
1834 // "unc=\\hostname\share" option is mandatory
1835 // after CIFS option parsing was rewritten in Linux 3.4.
1836 // Must pass it to the kernel. Must use backslashes.
1837 {
1838 char *unc = xasprintf("unc=\\\\%s\\%s", hostname, hostname + len + 1);
1839 parse_mount_options(unc, &filteropts);
1840 if (ENABLE_FEATURE_CLEAN_UP) free(unc);
1841 }
1842
1829 lsa = host2sockaddr(hostname, 0); 1843 lsa = host2sockaddr(hostname, 0);
1830 hostname[len] = c; 1844 hostname[len] = c;
1831 if (!lsa) 1845 if (!lsa)