summaryrefslogtreecommitdiff
path: root/source3/smbd/files.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2012-07-23 12:07:42 +0200
committerStefan Metzmacher <metze@samba.org>2012-07-23 16:22:03 +0200
commit0b903e1cf53439898ad1f088c6278f1ef1115328 (patch)
tree5261df6c0caf4bef84bc1909530349848d08f468 /source3/smbd/files.c
parente2cea8fbea6e708fb7fd27e96a0118ef33c4f114 (diff)
downloadsamba-0b903e1cf53439898ad1f088c6278f1ef1115328.tar.gz
samba-0b903e1cf53439898ad1f088c6278f1ef1115328.tar.bz2
samba-0b903e1cf53439898ad1f088c6278f1ef1115328.zip
s3:smbd: if a fsp has fsp->deferred_close, clients shouldn't be able to use it
metze Autobuild-User(master): Stefan Metzmacher <metze@samba.org> Autobuild-Date(master): Mon Jul 23 16:22:03 CEST 2012 on sn-devel-104
Diffstat (limited to 'source3/smbd/files.c')
-rw-r--r--source3/smbd/files.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/source3/smbd/files.c b/source3/smbd/files.c
index 390718f83e..0550b31155 100644
--- a/source3/smbd/files.c
+++ b/source3/smbd/files.c
@@ -544,6 +544,9 @@ files_struct *file_fsp(struct smb_request *req, uint16 fid)
}
if (req->chain_fsp != NULL) {
+ if (req->chain_fsp->deferred_close) {
+ return NULL;
+ }
return req->chain_fsp;
}
@@ -560,9 +563,15 @@ files_struct *file_fsp(struct smb_request *req, uint16 fid)
}
fsp = op->compat;
- if (fsp != NULL) {
- req->chain_fsp = fsp;
+ if (fsp == NULL) {
+ return NULL;
}
+
+ if (fsp->deferred_close) {
+ return NULL;
+ }
+
+ req->chain_fsp = fsp;
return fsp;
}
@@ -576,6 +585,9 @@ struct files_struct *file_fsp_smb2(struct smbd_smb2_request *smb2req,
struct files_struct *fsp;
if (smb2req->compat_chain_fsp != NULL) {
+ if (smb2req->compat_chain_fsp->deferred_close) {
+ return NULL;
+ }
return smb2req->compat_chain_fsp;
}
@@ -613,6 +625,10 @@ struct files_struct *file_fsp_smb2(struct smbd_smb2_request *smb2req,
return NULL;
}
+ if (fsp->deferred_close) {
+ return NULL;
+ }
+
smb2req->compat_chain_fsp = fsp;
return fsp;
}