diff options
author | Stefan Metzmacher <metze@samba.org> | 2012-07-23 12:07:42 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2012-07-23 16:22:03 +0200 |
commit | 0b903e1cf53439898ad1f088c6278f1ef1115328 (patch) | |
tree | 5261df6c0caf4bef84bc1909530349848d08f468 | |
parent | e2cea8fbea6e708fb7fd27e96a0118ef33c4f114 (diff) | |
download | samba-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
-rw-r--r-- | source3/smbd/files.c | 20 |
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; } |