s3: VFS: aixacl2: Add aixjfs2_get_nt_acl_at().
authorJeremy Allison <jra@samba.org>
Mon, 13 Apr 2020 20:41:57 +0000 (13:41 -0700)
committerJeremy Allison <jra@samba.org>
Thu, 7 May 2020 19:27:35 +0000 (19:27 +0000)
Not yet used.

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/modules/vfs_aixacl2.c

index e094be1cdb95bbf4feed3b4b4c4394546dee34f1..900a7b382a7db0bcfc58b5b92b5d13054a772182 100644 (file)
@@ -221,6 +221,46 @@ static NTSTATUS aixjfs2_get_nt_acl(vfs_handle_struct *handle,
                                pacl);
 }
 
+static NTSTATUS aixjfs2_get_nt_acl_at(vfs_handle_struct *handle,
+       struct files_struct *dirfsp,
+       const struct smb_filename *smb_fname,
+       uint32_t security_info,
+       TALLOC_CTX *mem_ctx,
+       struct security_descriptor **ppdesc)
+{
+       struct SMB4ACL_T *pacl = NULL;
+       bool    result;
+       bool    retryPosix = False;
+
+       SMB_ASSERT(dirfsp == handle->conn->cwd_fsp);
+
+       *ppdesc = NULL;
+       result = aixjfs2_get_nfs4_acl(mem_ctx,
+                       smb_fname->base_name,
+                       &pacl,
+                       &retryPosix);
+       if (retryPosix)
+       {
+               DEBUG(10, ("retrying with posix acl...\n"));
+               return posix_get_nt_acl(handle->conn,
+                               smb_fname,
+                               security_info,
+                               mem_ctx,
+                               ppdesc);
+       }
+       if (result==False)
+               return NT_STATUS_ACCESS_DENIED;
+
+       return smb_get_nt_acl_nfs4(handle->conn,
+                               smb_fname,
+                               NULL,
+                               security_info,
+                               mem_ctx,
+                               ppdesc,
+                               pacl);
+}
+
+
 static int aixjfs2_sys_acl_blob_get_file(vfs_handle_struct *handle,
                        const struct smb_filename *smb_fname,
                        TALLOC_CTX *mem_ctx,
@@ -557,6 +597,7 @@ int aixjfs2_sys_acl_delete_def_file(vfs_handle_struct *handle,
 static struct vfs_fn_pointers vfs_aixacl2_fns = {
        .fget_nt_acl_fn = aixjfs2_fget_nt_acl,
        .get_nt_acl_fn = aixjfs2_get_nt_acl,
+       .get_nt_acl_at_fn = aixjfs2_get_nt_acl_at,
        .fset_nt_acl_fn = aixjfs2_fset_nt_acl,
        .sys_acl_get_file_fn = aixjfs2_sys_acl_get_file,
        .sys_acl_get_fd_fn = aixjfs2_sys_acl_get_fd,