From: Jeremy Allison Date: Mon, 13 Apr 2020 21:04:28 +0000 (-0700) Subject: s3: VFS: vfs4acl_xattr: Add nfs4acl_xattr_get_nt_acl_at(). X-Git-Tag: ldb-2.2.0~604 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=0d013ed04b7de8b7e4983f6238431b49d1dcc02a;p=thirdparty%2Fsamba.git s3: VFS: vfs4acl_xattr: Add nfs4acl_xattr_get_nt_acl_at(). Not yet used. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- diff --git a/source3/modules/vfs_nfs4acl_xattr.c b/source3/modules/vfs_nfs4acl_xattr.c index f8cbe7964d1..5c80d1b0326 100644 --- a/source3/modules/vfs_nfs4acl_xattr.c +++ b/source3/modules/vfs_nfs4acl_xattr.c @@ -297,6 +297,44 @@ static NTSTATUS nfs4acl_xattr_get_nt_acl(struct vfs_handle_struct *handle, return status; } +static NTSTATUS nfs4acl_xattr_get_nt_acl_at(struct 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 **sd) +{ + struct SMB4ACL_T *smb4acl = NULL; + TALLOC_CTX *frame = talloc_stackframe(); + DATA_BLOB blob; + NTSTATUS status; + + SMB_ASSERT(dirfsp == handle->conn->cwd_fsp); + + status = nfs4acl_get_blob(handle, NULL, smb_fname, frame, &blob); + if (NT_STATUS_EQUAL(status, NT_STATUS_NOT_FOUND)) { + TALLOC_FREE(frame); + return nfs4acl_xattr_default_sd( + handle, smb_fname, mem_ctx, sd); + } + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + + status = nfs4acl_blob_to_smb4(handle, &blob, frame, &smb4acl); + if (!NT_STATUS_IS_OK(status)) { + TALLOC_FREE(frame); + return status; + } + + status = smb_get_nt_acl_nfs4(handle->conn, smb_fname, NULL, + security_info, mem_ctx, sd, + smb4acl); + TALLOC_FREE(frame); + return status; +} + static bool nfs4acl_smb4acl_set_fn(vfs_handle_struct *handle, files_struct *fsp, struct SMB4ACL_T *smb4acl) @@ -658,6 +696,7 @@ static struct vfs_fn_pointers nfs4acl_xattr_fns = { .connect_fn = nfs4acl_connect, .fget_nt_acl_fn = nfs4acl_xattr_fget_nt_acl, .get_nt_acl_fn = nfs4acl_xattr_get_nt_acl, + .get_nt_acl_at_fn = nfs4acl_xattr_get_nt_acl_at, .fset_nt_acl_fn = nfs4acl_xattr_fset_nt_acl, .sys_acl_get_file_fn = nfs4acl_xattr_fail__sys_acl_get_file,