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 8d471df69c596960016187d83ceb885749ecc3e1..625e3e9cb614eda4c64f5598d50990a62f80e594 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;