cifs: skip extra NULL byte in filenames
authorPaulo Alcantara <pc@cjr.nz>
Fri, 19 Aug 2022 20:00:19 +0000 (17:00 -0300)
committerSteve French <stfrench@microsoft.com>
Wed, 24 Aug 2022 17:22:24 +0000 (12:22 -0500)
commita1d2eb51f0a33c28f5399a1610e66b3fbd24e884
tree2cceb306806d56593d3a2008841e3a190e989ff0
parentba0803050d610d5072666be727bca5e03e55b242
cifs: skip extra NULL byte in filenames

Since commit:
 cifs: alloc_path_with_tree_prefix: do not append sep. if the path is empty
alloc_path_with_tree_prefix() function was no longer including the
trailing separator when @path is empty, although @out_len was still
assuming a path separator thus adding an extra byte to the final
filename.

This has caused mount issues in some Synology servers due to the extra
NULL byte in filenames when sending SMB2_CREATE requests with
SMB2_FLAGS_DFS_OPERATIONS set.

Fix this by checking if @path is not empty and then add extra byte for
separator.  Also, do not include any trailing NULL bytes in filename
as MS-SMB2 requires it to be 8-byte aligned and not NULL terminated.

Cc: stable@vger.kernel.org
Fixes: 7eacba3b00a3 ("cifs: alloc_path_with_tree_prefix: do not append sep. if the path is empty")
Signed-off-by: Paulo Alcantara (SUSE) <pc@cjr.nz>
Signed-off-by: Steve French <stfrench@microsoft.com>
fs/cifs/smb2pdu.c