const struct loadparm_substitution *lp_sub =
loadparm_s3_global_substitution();
mode_t mode;
- struct smb_filename *parent_dir_fname = NULL;
- struct smb_filename *base_name = NULL;
+ struct smb_filename *parent_dir_fname = parent_dir_fname_in;
+ struct smb_filename *base_name = smb_fname_atname_in;
NTSTATUS status;
bool posix_open = false;
bool need_re_stat = false;
return NT_STATUS_ACCESS_DENIED;
}
- status = parent_pathref(talloc_tos(),
- conn->cwd_fsp,
- smb_dname,
- &parent_dir_fname,
- &base_name);
- if (!NT_STATUS_IS_OK(status)) {
- return status;
- }
-
if (file_attributes & FILE_FLAG_POSIX_SEMANTICS) {
posix_open = true;
mode = (mode_t)(file_attributes & ~FILE_FLAG_POSIX_SEMANTICS);
smb_fname_str_dbg(parent_dir_fname),
smb_dname->base_name,
nt_errstr(status));
- TALLOC_FREE(parent_dir_fname);
return status;
}
base_name,
mode);
if (ret != 0) {
- TALLOC_FREE(parent_dir_fname);
return map_nt_error_from_unix(errno);
}
status = fd_openat(conn->cwd_fsp, smb_dname, fsp, O_RDONLY | O_DIRECTORY, 0);
if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(parent_dir_fname);
return status;
}
if (SMB_VFS_FSTAT(fsp, &smb_dname->st) == -1) {
DEBUG(2, ("Could not stat directory '%s' just created: %s\n",
smb_fname_str_dbg(smb_dname), strerror(errno)));
- TALLOC_FREE(parent_dir_fname);
return map_nt_error_from_unix(errno);
}
if (!S_ISDIR(smb_dname->st.st_ex_mode)) {
DEBUG(0, ("Directory '%s' just created is not a directory !\n",
smb_fname_str_dbg(smb_dname)));
- TALLOC_FREE(parent_dir_fname);
return NT_STATUS_NOT_A_DIRECTORY;
}
need_re_stat = true;
}
- TALLOC_FREE(parent_dir_fname);
-
if (need_re_stat) {
if (SMB_VFS_FSTAT(fsp, &smb_dname->st) == -1) {
DEBUG(2, ("Could not stat directory '%s' just created: %s\n",