diff options
author | Martin Santesson <martinsn@axis.com> | 2013-01-16 00:47:19 +0100 |
---|---|---|
committer | Denys Vlasenko <vda.linux@googlemail.com> | 2013-01-16 00:47:19 +0100 |
commit | 406ea15e2c108c949f8b1a3547eecf4dd9509724 (patch) | |
tree | 61e9b50dbe9f25aa39b13c872cdd5743912b2715 | |
parent | 970aa6b5bd95e435e537d123ec8be99c3077af1b (diff) | |
download | busybox-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.c | 16 |
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) |