From: Jeremy Allison Date: Mon, 13 Apr 2020 20:41:57 +0000 (-0700) Subject: s3: VFS: aixacl2: Add aixjfs2_get_nt_acl_at(). X-Git-Tag: ldb-2.2.0~610 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cbfbc40434f6d6e0f2d34b1d3783b9c95b6c098e;p=thirdparty%2Fsamba.git s3: VFS: aixacl2: Add aixjfs2_get_nt_acl_at(). Not yet used. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- diff --git a/source3/modules/vfs_aixacl2.c b/source3/modules/vfs_aixacl2.c index e094be1cdb9..900a7b382a7 100644 --- a/source3/modules/vfs_aixacl2.c +++ b/source3/modules/vfs_aixacl2.c @@ -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,