]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: torture: cmd_get_nt_acl(), SMB_VFS_GET_NT_ACL_AT() -> SMB_VFS_FGET_NT_ACL()
authorJeremy Allison <jra@samba.org>
Wed, 2 Jun 2021 20:32:28 +0000 (13:32 -0700)
committerRalph Boehme <slow@samba.org>
Wed, 9 Jun 2021 13:14:30 +0000 (13:14 +0000)
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/torture/cmd_vfs.c

index 5ba1e400b6eb84100a976d57a71f2d6410634247..d1b15ac64358198d1db2dc25983e58b172fafaf9 100644 (file)
@@ -1600,6 +1600,7 @@ static NTSTATUS cmd_get_nt_acl(struct vfs_state *vfs, TALLOC_CTX *mem_ctx,
        NTSTATUS status;
        struct security_descriptor *sd;
        struct smb_filename *smb_fname = NULL;
+       struct smb_filename *pathref_fname = NULL;
 
        if (argc != 2) {
                printf("Usage: get_nt_acl <path>\n");
@@ -1617,18 +1618,32 @@ static NTSTATUS cmd_get_nt_acl(struct vfs_state *vfs, TALLOC_CTX *mem_ctx,
                return NT_STATUS_NO_MEMORY;
        }
 
-       status = SMB_VFS_GET_NT_ACL_AT(vfs->conn,
+       status = synthetic_pathref(mem_ctx,
                                vfs->conn->cwd_fsp,
-                               smb_fname,
+                               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;
+       }
+       status = SMB_VFS_FGET_NT_ACL(pathref_fname->fsp,
                                SECINFO_OWNER | SECINFO_GROUP | SECINFO_DACL,
                                talloc_tos(),
                                &sd);
        if (!NT_STATUS_IS_OK(status)) {
                printf("get_nt_acl returned (%s)\n", nt_errstr(status));
+               TALLOC_FREE(smb_fname);
+               TALLOC_FREE(pathref_fname);
                return status;
        }
        printf("%s\n", sddl_encode(talloc_tos(), sd, get_global_sam_sid()));
        TALLOC_FREE(sd);
+       TALLOC_FREE(smb_fname);
+       TALLOC_FREE(pathref_fname);
        return NT_STATUS_OK;
 }