}
}
-NTSTATUS check_parent_access(struct connection_struct *conn,
- const char *path,
+static NTSTATUS check_parent_access(struct connection_struct *conn,
+ struct smb_filename *smb_fname,
uint32_t access_mask,
char **pp_parent_dir)
{
uint32_t access_granted = 0;
if (!parent_dirname(talloc_tos(),
- path,
+ smb_fname->base_name,
&parent_dir,
NULL)) {
return NT_STATUS_NO_MEMORY;
"on directory %s for "
"path %s for mask 0x%x returned (0x%x) %s\n",
parent_dir,
- path,
+ smb_fname->base_name,
access_mask,
access_granted,
nt_errstr(status) ));
access_mask);
} else if (local_flags & O_CREAT){
status = check_parent_access(conn,
- smb_fname->base_name,
+ smb_fname,
SEC_DIR_ADD_FILE,
NULL);
} else {
}
status = check_parent_access(conn,
- smb_dname->base_name,
+ smb_dname,
access_mask,
&parent_dir);
if(!NT_STATUS_IS_OK(status)) {
const struct security_token *token,
uint32_t access_desired,
uint32_t *access_granted);
-NTSTATUS check_parent_access(struct connection_struct *conn,
- const char *path,
- uint32_t access_mask,
- char **pp_parent_dir);
NTSTATUS fd_close(files_struct *fsp);
void change_file_owner_to_parent(connection_struct *conn,
const char *inherit_from_dir,