}
NTSTATUS check_parent_access(struct connection_struct *conn,
+ struct files_struct *dirfsp,
struct smb_filename *smb_fname,
uint32_t access_mask)
{
TALLOC_CTX *frame = talloc_stackframe();
bool ok;
+ /*
+ * NB. When dirfsp != conn->cwd_fsp, we must
+ * change parent_dir to be "." for the name here.
+ */
+
+ SMB_ASSERT(dirfsp == conn->cwd_fsp);
+
ok = parent_smb_fname(frame, smb_fname, &parent_dir, NULL);
if (!ok) {
status = NT_STATUS_NO_MEMORY;
}
status = check_parent_access(conn,
+ conn->cwd_fsp,
smb_fname,
SEC_DIR_ADD_FILE);
if (!NT_STATUS_IS_OK(status)) {
}
status = check_parent_access(conn,
+ conn->cwd_fsp,
smb_dname,
access_mask);
if(!NT_STATUS_IS_OK(status)) {