int ret;
struct smb_filename *parent_fname = NULL;
struct smb_filename *base_name = NULL;
- bool ok;
if (total_data < 100) {
return NT_STATUS_INVALID_PARAMETER;
"%.0f mode 0%o for file %s\n", (double)dev,
(unsigned int)unixmode, smb_fname_str_dbg(smb_fname)));
- ok = parent_smb_fname(talloc_tos(),
- smb_fname,
- &parent_fname,
- &base_name);
- if (!ok) {
- return NT_STATUS_NO_MEMORY;
- }
-
- ret = vfs_stat(conn, parent_fname);
- if (ret == -1) {
- TALLOC_FREE(parent_fname);
- return map_nt_error_from_unix(errno);
- }
- status = openat_pathref_fsp(conn->cwd_fsp, parent_fname);
- if (NT_STATUS_EQUAL(status, NT_STATUS_STOPPED_ON_SYMLINK)) {
- status = NT_STATUS_OBJECT_NAME_NOT_FOUND;
- }
+ status = parent_pathref(talloc_tos(),
+ conn->cwd_fsp,
+ smb_fname,
+ &parent_fname,
+ &base_name);
if (!NT_STATUS_IS_OK(status)) {
- TALLOC_FREE(parent_fname);
return status;
}