linux/fs/cifs
Paulo Alcantara a1d2eb51f0 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: 7eacba3b00 ("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>
2022-08-24 12:22:24 -05:00
..
asn1.c cifs: decoding negTokenInit with generic ASN1 decoder 2021-06-20 21:28:17 -05:00
cached_dir.c cifs: Do not access tcon->cfids->cfid directly from is_path_accessible 2022-08-12 17:40:15 -05:00
cached_dir.h cifs: Do not access tcon->cfids->cfid directly from is_path_accessible 2022-08-12 17:40:15 -05:00
cifs_debug.c cifs: remove unused server parameter from calc_smb_size() 2022-08-17 18:07:13 -05:00
cifs_debug.h cifs: use SPDX-Licence-Identifier 2021-06-20 21:28:17 -05:00
cifs_dfs_ref.c cifs: support nested dfs links over reconnect 2021-11-10 16:30:13 -06:00
cifs_fs_sb.h cifs: support nested dfs links over reconnect 2021-11-10 16:30:13 -06:00
cifs_ioctl.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
cifs_spnego_negtokeninit.asn1 cifs: decoding negTokenInit with generic ASN1 decoder 2021-06-20 21:28:17 -05:00
cifs_spnego.c cifs: use the chans_need_reconnect bitmap for reconnect status 2022-01-02 20:38:46 -06:00
cifs_spnego.h cifs: use the chans_need_reconnect bitmap for reconnect status 2022-01-02 20:38:46 -06:00
cifs_swn.c cifs: fix potential deadlock in direct reclaim 2022-06-01 00:03:18 -05:00
cifs_swn.h cifs: simplify SWN code with dummy funcs instead of ifdefs 2021-04-25 16:28:22 -05:00
cifs_unicode.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
cifs_unicode.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifs_uniupr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 156 2019-05-30 11:26:35 -07:00
cifsacl.c cifs: when insecure legacy is disabled shrink amount of SMB1 code 2022-08-05 11:24:03 -05:00
cifsacl.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
cifsencrypt.c cifs: avoid use of global locks for high contention data 2022-08-01 01:34:45 -05:00
cifsfs.c smb3: allow deferred close timeout to be configurable 2022-08-11 20:03:04 -05:00
cifsfs.h cifs: update internal module number 2022-08-05 11:24:17 -05:00
cifsglob.h cifs: remove unused server parameter from calc_smb_size() 2022-08-17 18:07:13 -05:00
cifspdu.h smb3: move defines for query info and query fsinfo to smbfs_common 2022-03-26 23:09:51 -05:00
cifsproto.h cifs: remove unused server parameter from calc_smb_size() 2022-08-17 18:07:13 -05:00
cifsroot.c cifs: move from strlcpy with unused retval to strscpy 2022-08-19 11:02:26 -05:00
cifssmb.c cifs: remove useless DeleteMidQEntry() 2022-08-05 11:24:06 -05:00
connect.c cifs: move from strlcpy with unused retval to strscpy 2022-08-19 11:02:26 -05:00
dfs_cache.c cifs: avoid use of global locks for high contention data 2022-08-01 01:34:45 -05:00
dfs_cache.h cifs: support share failover when remounting 2021-07-22 11:43:23 -05:00
dir.c cifs: when insecure legacy is disabled shrink amount of SMB1 code 2022-08-05 11:24:03 -05:00
dns_resolve.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
dns_resolve.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
export.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
file.c 8 cifs/smb3 fixes, mostly restructuring/cleanup, including two for stable 2022-08-13 17:31:18 -07:00
fs_context.c smb3: allow deferred close timeout to be configurable 2022-08-11 20:03:04 -05:00
fs_context.h smb3: allow deferred close timeout to be configurable 2022-08-11 20:03:04 -05:00
fscache.c netfs: Fix gcc-12 warning by embedding vfs inode in netfs_i_context 2022-06-09 13:55:00 -07:00
fscache.h cifs: Remove {cifs,nfs}_fscache_release_page() 2022-08-10 21:26:08 -05:00
inode.c cifs: Move cached-dir functions into a separate file 2022-08-11 10:33:18 -05:00
ioctl.c cifs: when insecure legacy is disabled shrink amount of SMB1 code 2022-08-05 11:24:03 -05:00
Kconfig cifs: Support fscache indexing rewrite 2022-01-19 11:21:08 -06:00
link.c cifs: when insecure legacy is disabled shrink amount of SMB1 code 2022-08-05 11:24:03 -05:00
Makefile cifs: Move cached-dir functions into a separate file 2022-08-11 10:33:18 -05:00
misc.c cifs: Fix memory leak on the deferred close 2022-08-19 10:59:53 -05:00
netlink.c cifs: Constify static struct genl_ops 2021-06-20 21:28:16 -05:00
netlink.h cifs: Register generic netlink family 2020-12-14 09:16:22 -06:00
netmisc.c cifs: remove unused server parameter from calc_smb_size() 2022-08-17 18:07:13 -05:00
nterr.c treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
nterr.h treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 61 2019-05-24 17:36:45 +02:00
ntlmssp.h treewide: Replace zero-length arrays with flexible-array members 2022-02-17 07:00:39 -06:00
readdir.c cifs: remove unused server parameter from calc_smb_size() 2022-08-17 18:07:13 -05:00
rfc1002pdu.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
sess.c cifs: when insecure legacy is disabled shrink amount of SMB1 code 2022-08-05 11:24:03 -05:00
smb1ops.c cifs: avoid use of global locks for high contention data 2022-08-01 01:34:45 -05:00
smb2file.c cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl() 2022-08-17 23:30:49 -05:00
smb2glob.h smb3: move defines for ioctl protocol header and SMB2 sizes to smbfs_common 2022-03-26 23:09:20 -05:00
smb2inode.c cifs: Do not access tcon->cfids->cfid directly from is_path_accessible 2022-08-12 17:40:15 -05:00
smb2maperror.c cifs: Create a new shared file holding smb2 pdu definitions 2021-11-05 09:50:57 -05:00
smb2misc.c cifs: remove unused server parameter from calc_smb_size() 2022-08-17 18:07:13 -05:00
smb2ops.c smb3: missing inode locks in punch hole 2022-08-23 03:15:27 -05:00
smb2pdu.c cifs: skip extra NULL byte in filenames 2022-08-24 12:22:24 -05:00
smb2pdu.h Add various fsctl structs 2022-05-23 20:24:12 -05:00
smb2proto.h cifs: remove useless parameter 'is_fsctl' from SMB2_ioctl() 2022-08-17 23:30:49 -05:00
smb2status.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
smb2transport.c cifs: remove useless DeleteMidQEntry() 2022-08-05 11:24:06 -05:00
smbdirect.c cifs: fix potential deadlock in direct reclaim 2022-06-01 00:03:18 -05:00
smbdirect.h cifs: smbd: Do not schedule work to send immediate packet on every receive 2020-04-07 12:41:16 -05:00
smbencrypt.c cifs: rename cifs_common to smbfs_common 2021-09-08 23:59:26 -05:00
smberr.h cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
trace.c smb3: Cleanup license mess 2019-01-24 09:37:33 -06:00
trace.h smb3: add trace point for SMB2_set_eof 2022-06-16 18:07:10 -05:00
transport.c cifs: alloc_mid function should be marked as static 2022-08-05 11:24:12 -05:00
unc.c cifs: don't cargo-cult strndup() 2021-04-25 16:28:23 -05:00
winucase.c cifs: remove pathname for file from SPDX header 2021-09-13 14:51:10 -05:00
xattr.c cifs: when insecure legacy is disabled shrink amount of SMB1 code 2022-08-05 11:24:03 -05:00