Pass this down into smbd_calculate_maximum_allowed_access_fsp().
Currently pass fsp->conn->cwd_fsp everywhere.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
if (!config->readdir_attr_max_access) {
attr_data->attr_data.aapl.max_access = FILE_GENERIC_ALL;
} else {
- status = smbd_calculate_access_mask_fsp(fsp,
+ status = smbd_calculate_access_mask_fsp(fsp->conn->cwd_fsp,
+ fsp,
false,
SEC_FLAG_MAXIMUM_ALLOWED,
&attr_data->attr_data.aapl.max_access);
return NT_STATUS_NO_MEMORY;
}
- status = smbd_calculate_access_mask_fsp(fsp,
+ status = smbd_calculate_access_mask_fsp(conn->cwd_fsp,
+ fsp,
false,
access_mask,
&access_mask);
struct ea_list *name_list,
struct file_id *file_id);
-NTSTATUS smbd_calculate_access_mask_fsp(struct files_struct *fsp,
+NTSTATUS smbd_calculate_access_mask_fsp(struct files_struct *dirsfp,
+ struct files_struct *fsp,
bool use_privs,
uint32_t access_mask,
uint32_t *access_mask_out);
{
NTSTATUS status;
- status = smbd_calculate_access_mask_fsp(fsp,
+ status = smbd_calculate_access_mask_fsp(fsp->conn->cwd_fsp,
+ fsp,
false,
access_mask,
&access_mask);
return NT_STATUS_OK;
}
-NTSTATUS smbd_calculate_access_mask_fsp(struct files_struct *fsp,
+NTSTATUS smbd_calculate_access_mask_fsp(struct files_struct *dirfsp,
+ struct files_struct *fsp,
bool use_privs,
uint32_t access_mask,
uint32_t *access_mask_out)
if (access_mask & MAXIMUM_ALLOWED_ACCESS) {
status = smbd_calculate_maximum_allowed_access_fsp(
- fsp->conn->cwd_fsp,
+ dirfsp,
fsp,
use_privs,
&access_mask);
}
}
- status = smbd_calculate_access_mask_fsp(smb_fname->fsp,
+ status = smbd_calculate_access_mask_fsp(conn->cwd_fsp,
+ smb_fname->fsp,
false,
access_mask,
&access_mask);
create_disposition,
file_attributes);
- status = smbd_calculate_access_mask_fsp(smb_dname->fsp,
+ status = smbd_calculate_access_mask_fsp(conn->cwd_fsp,
+ smb_dname->fsp,
false,
access_mask,
&access_mask);
uint32_t max_access_granted;
DATA_BLOB blob = data_blob_const(p, sizeof(p));
- status = smbd_calculate_access_mask_fsp(state->result,
+ status = smbd_calculate_access_mask_fsp(
+ state->result->conn->cwd_fsp,
+ state->result,
false,
SEC_FLAG_MAXIMUM_ALLOWED,
&max_access_granted);