s3: VFS: afsacl. Add afsacl_get_nt_acl_at().
authorJeremy Allison <jra@samba.org>
Mon, 13 Apr 2020 20:39:03 +0000 (13:39 -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_afsacl.c

index e4b99fdcf93de51546236761754f89af7f7bab17..70ee15da7dd473e2d70d46a49d7a52684b112d00 100644 (file)
@@ -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