]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: smbd: Cleanup - don't set the FLAGS2_DFS_PATHNAMES in flags2 in the glue struct...
authorJeremy Allison <jra@samba.org>
Mon, 27 Mar 2023 16:48:26 +0000 (09:48 -0700)
committerRalph Boehme <slow@samba.org>
Fri, 31 Mar 2023 05:12:32 +0000 (05:12 +0000)
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 <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
selftest/knownfail.d/dfs_paths
source3/smbd/smb2_glue.c

index 127c0492f51fd9c1096cef46fff42d2d9cce7a6a..142d0540b90fd85556b8dfc7a9258e02446dadf9 100644 (file)
@@ -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\)
index 0e3c489f46c50ae7e46b40ab8b506c5db42dda7e..543c0a0b9e6b1d444548da9a4e826eb1c9dc95b9 100644 (file)
@@ -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;