From: Jeremy Allison Date: Mon, 13 Apr 2020 20:39:03 +0000 (-0700) Subject: s3: VFS: afsacl. Add afsacl_get_nt_acl_at(). X-Git-Tag: ldb-2.2.0~611 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=373843f5fbde3a40db6fe50728ccd6c132d6d81f;p=thirdparty%2Fsamba.git s3: VFS: afsacl. Add afsacl_get_nt_acl_at(). Not yet used. Signed-off-by: Jeremy Allison Reviewed-by: Ralph Boehme --- diff --git a/source3/modules/vfs_afsacl.c b/source3/modules/vfs_afsacl.c index e4b99fdcf93..70ee15da7dd 100644 --- a/source3/modules/vfs_afsacl.c +++ b/source3/modules/vfs_afsacl.c @@ -1060,6 +1060,34 @@ static NTSTATUS afsacl_get_nt_acl(struct vfs_handle_struct *handle, return (sd_size != 0) ? NT_STATUS_OK : NT_STATUS_ACCESS_DENIED; } +static NTSTATUS afsacl_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 **ppdesc) +{ + struct afs_acl acl; + size_t sd_size; + + SMB_ASSERT(dirfsp == handle->conn->cwd_fsp); + + DEBUG(5, ("afsacl_get_nt_acl: %s\n", smb_fname->base_name)); + + sidpts = lp_parm_bool(SNUM(handle->conn), "afsacl", "sidpts", false); + + if (!afs_get_afs_acl(smb_fname->base_name, &acl)) { + return NT_STATUS_ACCESS_DENIED; + } + + sd_size = afs_to_nt_acl(&acl, handle->conn, smb_fname, security_info, + mem_ctx, ppdesc); + + free_afs_acl(&acl); + + return (sd_size != 0) ? NT_STATUS_OK : NT_STATUS_ACCESS_DENIED; +} + static NTSTATUS afsacl_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, uint32_t security_info_sent, @@ -1109,6 +1137,7 @@ static struct vfs_fn_pointers vfs_afsacl_fns = { .connect_fn = afsacl_connect, .fget_nt_acl_fn = afsacl_fget_nt_acl, .get_nt_acl_fn = afsacl_get_nt_acl, + .get_nt_acl_at_fn = afsacl_get_nt_acl_at, .fset_nt_acl_fn = afsacl_fset_nt_acl, .sys_acl_blob_get_file_fn = afsacl_sys_acl_blob_get_file, .sys_acl_blob_get_fd_fn = afsacl_sys_acl_blob_get_fd