1
0
mirror of https://github.com/samba-team/samba.git synced 2025-02-28 01:58:17 +03:00

s3:smbd: add file_fsp_smb2()

metze
This commit is contained in:
Stefan Metzmacher 2012-06-08 10:11:57 +02:00
parent 72564052b6
commit 2a804a359a
2 changed files with 46 additions and 0 deletions

View File

@ -581,6 +581,49 @@ files_struct *file_fsp(struct smb_request *req, uint16 fid)
return fsp;
}
struct files_struct *file_fsp_smb2(struct smbd_smb2_request *smb2req,
uint64_t persistent_id,
uint64_t volatile_id)
{
struct files_struct *fsp;
if (smb2req->compat_chain_fsp != NULL) {
return smb2req->compat_chain_fsp;
}
if (persistent_id != volatile_id) {
return NULL;
}
if (volatile_id > UINT16_MAX) {
return NULL;
}
fsp = file_fnum(smb2req->sconn, (uint16_t)volatile_id);
if (fsp == NULL) {
return NULL;
}
if (smb2req->tcon == NULL) {
return NULL;
}
if (smb2req->tcon->compat_conn != fsp->conn) {
return NULL;
}
if (smb2req->session == NULL) {
return NULL;
}
if (smb2req->session->vuid != fsp->vuid) {
return NULL;
}
smb2req->compat_chain_fsp = fsp;
return fsp;
}
/****************************************************************************
Duplicate the file handle part for a DOS or FCB open.
****************************************************************************/

View File

@ -387,6 +387,9 @@ bool file_find_subpath(files_struct *dir_fsp);
void file_sync_all(connection_struct *conn);
void file_free(struct smb_request *req, files_struct *fsp);
files_struct *file_fsp(struct smb_request *req, uint16 fid);
struct files_struct *file_fsp_smb2(struct smbd_smb2_request *smb2req,
uint64_t persistent_id,
uint64_t volatile_id);
NTSTATUS dup_file_fsp(struct smb_request *req, files_struct *from,
uint32 access_mask, uint32 share_access,
uint32 create_options, files_struct *to);