cifs: alloc_path_with_tree_prefix: do not append sep. if the path is empty
authorEugene Korenevsky <ekorenevsky@astralinux.ru>
Fri, 14 Jan 2022 19:53:00 +0000 (22:53 +0300)
committerSteve French <stfrench@microsoft.com>
Mon, 17 Jan 2022 19:28:05 +0000 (13:28 -0600)
alloc_path_with_tree_prefix() concatenates tree prefix and the path.
Windows CIFS client does not add separator after the tree prefix if the path
is empty. Let's do the same.

This fixes mounting DFS namespaces with names containing non-ASCII symbols.

BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215440
Signed-off-by: Eugene Korenevsky <ekorenevsky@astralinux.ru>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2pdu.c

index 8d471df..625e3e9 100644 (file)
@@ -2587,8 +2587,13 @@ alloc_path_with_tree_prefix(__le16 **out_path, int *out_size, int *out_len,
 
        cp = load_nls_default();
        cifs_strtoUTF16(*out_path, treename, treename_len, cp);
-       UniStrcat(*out_path, sep);
-       UniStrcat(*out_path, path);
+
+       /* Do not append the separator if the path is empty */
+       if (path[0] != cpu_to_le16(0x0000)) {
+               UniStrcat(*out_path, sep);
+               UniStrcat(*out_path, path);
+       }
+
        unload_nls(cp);
 
        return 0;