From: Jeremy Allison Date: Mon, 27 Mar 2023 16:48:26 +0000 (-0700) Subject: s3: smbd: Cleanup - don't set the FLAGS2_DFS_PATHNAMES in flags2 in the glue struct... X-Git-Tag: talloc-2.4.1~1230 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bb92df7c9e541073e69c6185111d330fa90c98a4;p=thirdparty%2Fsamba.git s3: smbd: Cleanup - don't set the FLAGS2_DFS_PATHNAMES in flags2 in the glue struct if it's not a DFS server or share. Even if the client claims it's a DFS pathname. Matches what Windows does if it gets a DFS pathname on a non-DFS share. Remove samba3.smbtorture_s3.smb2.SMB2-NON-DFS-SHARE.smbtorture\(fileserver\) test knownfail. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- diff --git a/selftest/knownfail.d/dfs_paths b/selftest/knownfail.d/dfs_paths index 127c0492f51..142d0540b90 100644 --- a/selftest/knownfail.d/dfs_paths +++ b/selftest/knownfail.d/dfs_paths @@ -1,5 +1,4 @@ ^samba3.smbtorture_s3.smb2.SMB2-DFS-PATHS.smbtorture\(fileserver\) -^samba3.smbtorture_s3.smb2.SMB2-NON-DFS-SHARE.smbtorture\(fileserver\) ^samba3.smbtorture_s3.smb2.SMB2-DFS-SHARE-NON-DFS-PATH.smbtorture\(fileserver\) ^samba3.smbtorture_s3.smb1.SMB1-DFS-PATHS.smbtorture\(fileserver\) ^samba3.smbtorture_s3.smb1.SMB1-DFS-SEARCH-PATHS.smbtorture\(fileserver\) diff --git a/source3/smbd/smb2_glue.c b/source3/smbd/smb2_glue.c index 0e3c489f46c..543c0a0b9e6 100644 --- a/source3/smbd/smb2_glue.c +++ b/source3/smbd/smb2_glue.c @@ -57,8 +57,13 @@ struct smb_request *smbd_smb2_fake_smb_request(struct smbd_smb2_request *req) FLAGS2_LONG_PATH_COMPONENTS | FLAGS2_IS_LONG_NAME; - if (IVAL(inhdr, SMB2_HDR_FLAGS) & SMB2_HDR_FLAG_DFS) { - smbreq->flags2 |= FLAGS2_DFS_PATHNAMES; + /* Only set FLAGS2_DFS_PATHNAMES if it's really a DFS share */ + if (smbreq->conn != NULL && + lp_host_msdfs() && + lp_msdfs_root(SNUM(smbreq->conn))) { + if (IVAL(inhdr, SMB2_HDR_FLAGS) & SMB2_HDR_FLAG_DFS) { + smbreq->flags2 |= FLAGS2_DFS_PATHNAMES; + } } smbreq->mid = BVAL(inhdr, SMB2_HDR_MESSAGE_ID); smbreq->chain_fsp = req->compat_chain_fsp;