Not yet used. Currently always conn->cwd_fsp.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
uint32_t slots;
status = smbd_check_access_rights(handle->conn,
+ handle->conn->cwd_fsp,
snaps_dname,
false,
SEC_DIR_LIST);
}
status = smbd_check_access_rights(handle->conn,
+ handle->conn->cwd_fsp,
snaps_dname,
false,
SEC_DIR_LIST);
}
status = smbd_check_access_rights(handle->conn,
+ handle->conn->cwd_fsp,
&smb_fname,
false,
SEC_DIR_LIST);
}
status = smbd_check_access_rights(conn,
+ conn->cwd_fsp,
smb_fname,
false,
FILE_WRITE_ATTRIBUTES);
* check the file DELETE permission separately.
*/
+ /*
+ * NB. When dirfsp != conn->cwd_fsp, we must
+ * change smb_fname_parent to be "." for the name here.
+ */
ret = NT_STATUS_IS_OK(smbd_check_access_rights(conn,
+ dirfsp,
smb_fname_parent,
false,
FILE_DELETE_CHILD));
{
SMB_ASSERT(dirfsp == conn->cwd_fsp);
return NT_STATUS_IS_OK(smbd_check_access_rights(conn,
+ dirfsp,
smb_fname,
false,
FILE_WRITE_DATA));
****************************************************************************/
NTSTATUS smbd_check_access_rights(struct connection_struct *conn,
+ struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
bool use_privs,
uint32_t access_mask)
uint32_t rejected_mask = access_mask;
uint32_t do_not_check_mask = 0;
+ SMB_ASSERT(dirfsp == conn->cwd_fsp);
+
rejected_share_access = access_mask & ~(conn->share_access);
if (rejected_share_access) {
}
return smbd_check_access_rights(conn,
+ conn->cwd_fsp,
smb_fname,
false,
access_mask);
/* Only do this check on non-stream open. */
if (file_existed) {
status = smbd_check_access_rights(conn,
+ conn->cwd_fsp,
smb_fname,
false,
access_mask);
}
status = smbd_check_access_rights(conn,
+ conn->cwd_fsp,
smb_fname,
false,
access_mask);
if (info == FILE_WAS_OPENED) {
status = smbd_check_access_rights(conn,
+ conn->cwd_fsp,
smb_dname,
false,
access_mask);
/* The following definitions come from smbd/open.c */
NTSTATUS smbd_check_access_rights(struct connection_struct *conn,
+ struct files_struct *dirfsp,
const struct smb_filename *smb_fname,
bool use_privs,
uint32_t access_mask);
mode &= ~FILE_ATTRIBUTE_DIRECTORY;
status = smbd_check_access_rights(conn,
+ conn->cwd_fsp,
smb_fname,
false,
FILE_WRITE_ATTRIBUTES);
{
SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
return smbd_check_access_rights(conn,
+ dirfsp,
smb_fname,
false,
access_mask);