}
static NTSTATUS change_dir_owner_to_parent(connection_struct *conn,
- const char *inherit_from_dir,
+ struct smb_filename *smb_fname_parent,
struct smb_filename *smb_dname,
SMB_STRUCT_STAT *psbuf)
{
- struct smb_filename *smb_fname_parent;
struct smb_filename *smb_fname_cwd = NULL;
struct smb_filename *saved_dir_fname = NULL;
TALLOC_CTX *ctx = talloc_tos();
NTSTATUS status = NT_STATUS_OK;
int ret;
- smb_fname_parent = synthetic_smb_fname(ctx,
- inherit_from_dir,
- NULL,
- NULL,
- 0);
- if (smb_fname_parent == NULL) {
- return NT_STATUS_NO_MEMORY;
- }
-
ret = SMB_VFS_STAT(conn, smb_fname_parent);
if (ret == -1) {
status = map_nt_error_from_unix(errno);
vfs_ChDir(conn, saved_dir_fname);
out:
TALLOC_FREE(saved_dir_fname);
- TALLOC_FREE(smb_fname_parent);
TALLOC_FREE(smb_fname_cwd);
return status;
}
/* Change the owner if required. */
if (lp_inherit_owner(SNUM(conn)) != INHERIT_OWNER_NO) {
- change_dir_owner_to_parent(conn, parent_dir,
+ change_dir_owner_to_parent(conn, parent_dir_fname,
smb_dname,
&smb_dname->st);
need_re_stat = true;