summaryrefslogtreecommitdiff
path: root/source3/torture/cmd_vfs.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2021-05-14 16:09:58 -0700
committerJeremy Allison <jra@samba.org>2021-05-18 17:29:34 +0000
commitb6700044de66fb0a1869cc939e7053f28cb93f27 (patch)
treee3d635a2ec5d29f482b90de394b7e94e8cc96e06 /source3/torture/cmd_vfs.c
parentfd16f9da7c07f1ec03f1730470e831debc874b57 (diff)
downloadsamba-b6700044de66fb0a1869cc939e7053f28cb93f27.tar.gz
s3: torture: cmd_sys_acl_delete_def_file: Move SMB_VFS_SYS_ACL_DELETE_DEF_FILE() -> SMB_VFS_SYS_ACL_DELETE_DEF_FD().
Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Noel Power <npower@samba.org>
Diffstat (limited to 'source3/torture/cmd_vfs.c')
-rw-r--r--source3/torture/cmd_vfs.c38
1 files changed, 29 insertions, 9 deletions
diff --git a/source3/torture/cmd_vfs.c b/source3/torture/cmd_vfs.c
index f83621f49b6..5d75d930b72 100644
--- a/source3/torture/cmd_vfs.c
+++ b/source3/torture/cmd_vfs.c
@@ -1947,29 +1947,49 @@ static NTSTATUS cmd_sys_acl_delete_def_file(struct vfs_state *vfs, TALLOC_CTX *m
{
int ret;
struct smb_filename *smb_fname = NULL;
+ struct smb_filename *pathref_fname = NULL;
+ NTSTATUS status;
if (argc != 2) {
printf("Usage: sys_acl_delete_def_file <path>\n");
return NT_STATUS_OK;
}
- smb_fname = synthetic_smb_fname(talloc_tos(),
+ smb_fname = synthetic_smb_fname_split(mem_ctx,
argv[1],
- NULL,
- NULL,
- 0,
- ssf_flags());
-
+ lp_posix_pathnames());
if (smb_fname == NULL) {
return NT_STATUS_NO_MEMORY;
}
- ret = SMB_VFS_SYS_ACL_DELETE_DEF_FILE(vfs->conn, smb_fname);
+ status = synthetic_pathref(mem_ctx,
+ vfs->conn->cwd_fsp,
+ smb_fname->base_name,
+ NULL,
+ NULL,
+ smb_fname->twrp,
+ smb_fname->flags,
+ &pathref_fname);
+ if (!NT_STATUS_IS_OK(status)) {
+ TALLOC_FREE(smb_fname);
+ return status;
+ }
+ if (!pathref_fname->fsp->fsp_flags.is_directory) {
+ printf("sys_acl_delete_def_file - %s is not a directory\n",
+ smb_fname->base_name);
+ TALLOC_FREE(smb_fname);
+ TALLOC_FREE(pathref_fname);
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+ ret = SMB_VFS_SYS_ACL_DELETE_DEF_FD(pathref_fname->fsp);
if (ret == -1) {
- printf("sys_acl_delete_def_file failed (%s)\n", strerror(errno));
+ int err = errno;
+ printf("sys_acl_delete_def_file failed (%s)\n", strerror(err));
TALLOC_FREE(smb_fname);
- return NT_STATUS_UNSUCCESSFUL;
+ TALLOC_FREE(pathref_fname);
+ return map_nt_error_from_unix(err);
}
TALLOC_FREE(smb_fname);
+ TALLOC_FREE(pathref_fname);
return NT_STATUS_OK;
}