summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/smbd/globals.h2
-rw-r--r--source3/smbd/smb2_create.c2
-rw-r--r--source3/smbd/smb2_glue.c1
3 files changed, 5 insertions, 0 deletions
diff --git a/source3/smbd/globals.h b/source3/smbd/globals.h
index db19a3a108..581e5b197f 100644
--- a/source3/smbd/globals.h
+++ b/source3/smbd/globals.h
@@ -227,6 +227,8 @@ struct smbd_smb2_request {
int current_idx;
bool do_signing;
+ struct files_struct *compat_chain_fsp;
+
struct {
/* the NBT header is not allocated */
uint8_t nbt_hdr[4];
diff --git a/source3/smbd/smb2_create.c b/source3/smbd/smb2_create.c
index 5d379ec3a5..d1472d5361 100644
--- a/source3/smbd/smb2_create.c
+++ b/source3/smbd/smb2_create.c
@@ -275,6 +275,8 @@ static NTSTATUS smbd_smb2_create(struct smbd_smb2_request *req,
}
}
+ req->compat_chain_fsp = smbreq->chain_fsp;
+
*out_oplock_level = 0;
if ((in_create_disposition == FILE_SUPERSEDE)
&& (info == FILE_WAS_OVERWRITTEN)) {
diff --git a/source3/smbd/smb2_glue.c b/source3/smbd/smb2_glue.c
index c3c38542a0..5fa3bd2249 100644
--- a/source3/smbd/smb2_glue.c
+++ b/source3/smbd/smb2_glue.c
@@ -46,6 +46,7 @@ struct smb_request *smbd_smb2_fake_smb_request(struct smbd_smb2_request *req)
if (IVAL(inhdr, SMB2_HDR_FLAGS) & SMB2_HDR_FLAG_DFS) {
smbreq->flags2 |= FLAGS2_DFS_PATHNAMES;
}
+ smbreq->chain_fsp = req->compat_chain_fsp;
return smbreq;
}