return NT_STATUS_NOT_IMPLEMENTED;
}
-static NTSTATUS skel_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)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
static NTSTATUS skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
uint32_t security_info_sent,
const struct security_descriptor *psd)
/* NT ACL operations. */
.fget_nt_acl_fn = skel_fget_nt_acl,
- .get_nt_acl_at_fn = skel_get_nt_acl_at,
.fset_nt_acl_fn = skel_fset_nt_acl,
/* POSIX ACL operations. */
ppdesc);
}
-static NTSTATUS skel_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)
-{
- return SMB_VFS_NEXT_GET_NT_ACL_AT(handle,
- dirfsp,
- smb_fname,
- security_info,
- mem_ctx,
- ppdesc);
-}
-
static NTSTATUS skel_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
uint32_t security_info_sent,
const struct security_descriptor *psd)
/* NT ACL operations. */
.fget_nt_acl_fn = skel_fget_nt_acl,
- .get_nt_acl_at_fn = skel_get_nt_acl_at,
.fset_nt_acl_fn = skel_fset_nt_acl,
/* POSIX ACL operations. */
* Version 45 - Add SMB_VFS_SYS_ACL_DELETE_DEF_FD
* Version 45 - Remove SMB_VFS_SYS_ACL_DELETE_DEF_FILE
* Version 45 - Add SMB_VFS_PARENT_PATHNAME
+ * Version 45 - Remove SMB_VFS_GET_NT_ACL_AT
*/
#define SMB_VFS_INTERFACE_VERSION 45
uint32_t security_info,
TALLOC_CTX *mem_ctx,
struct security_descriptor **ppdesc);
- NTSTATUS (*get_nt_acl_at_fn)(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);
NTSTATUS (*fset_nt_acl_fn)(struct vfs_handle_struct *handle,
struct files_struct *fsp,
uint32_t security_info_sent,
#define SMB_VFS_NEXT_FGET_NT_ACL(handle, fsp, security_info, mem_ctx, ppdesc) \
smb_vfs_call_fget_nt_acl((handle)->next, (fsp), (security_info), (mem_ctx), (ppdesc))
-#define SMB_VFS_GET_NT_ACL_AT(conn, dirfsp, smb_fname, security_info, mem_ctx, ppdesc) \
- smb_vfs_call_get_nt_acl_at((conn)->vfs_handles, (dirfsp), (smb_fname), (security_info), (mem_ctx), (ppdesc))
-#define SMB_VFS_NEXT_GET_NT_ACL_AT(handle, dirfsp, smb_fname, security_info, mem_ctx, ppdesc) \
- smb_vfs_call_get_nt_acl_at((handle)->next, (dirfsp), (smb_fname), (security_info), (mem_ctx), (ppdesc))
-
#define SMB_VFS_AUDIT_FILE(conn, name, sacl, access_requested, access_denied) \
smb_vfs_call_audit_file((conn)->vfs_handles, (name), (sacl), (access_requested), (access_denied))
#define SMB_VFS_NEXT_AUDIT_FILE(handle, name, sacl, access_requested, access_denied) \
return result;
}
-static NTSTATUS vfswrap_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)
-{
- NTSTATUS result;
-
- START_PROFILE(get_nt_acl_at);
-
- SMB_ASSERT(dirfsp == dirfsp->conn->cwd_fsp);
-
- result = posix_get_nt_acl(handle->conn,
- smb_fname,
- security_info,
- mem_ctx,
- ppdesc);
- END_PROFILE(get_nt_acl_at);
- return result;
-}
-
static NTSTATUS vfswrap_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp, uint32_t security_info_sent, const struct security_descriptor *psd)
{
NTSTATUS result;
/* NT ACL operations. */
.fget_nt_acl_fn = vfswrap_fget_nt_acl,
- .get_nt_acl_at_fn = vfswrap_get_nt_acl_at,
.fset_nt_acl_fn = vfswrap_fset_nt_acl,
.audit_file_fn = vfswrap_audit_file,
/* NT ACL operations. */
SMB_VFS_OP_FGET_NT_ACL,
- SMB_VFS_OP_GET_NT_ACL_AT,
SMB_VFS_OP_FSET_NT_ACL,
SMB_VFS_OP_AUDIT_FILE,
{ SMB_VFS_OP_FGET_DOS_ATTRIBUTES, "fget_dos_attributes" },
{ SMB_VFS_OP_FSET_DOS_ATTRIBUTES, "fset_dos_attributes" },
{ SMB_VFS_OP_FGET_NT_ACL, "fget_nt_acl" },
- { SMB_VFS_OP_GET_NT_ACL_AT, "get_nt_acl_at" },
{ SMB_VFS_OP_FSET_NT_ACL, "fset_nt_acl" },
{ SMB_VFS_OP_AUDIT_FILE, "audit_file" },
{ SMB_VFS_OP_SYS_ACL_GET_FILE, "sys_acl_get_file" },
return result;
}
-static NTSTATUS smb_full_audit_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)
-{
- NTSTATUS result;
-
- result = SMB_VFS_NEXT_GET_NT_ACL_AT(handle,
- dirfsp,
- smb_fname,
- security_info,
- mem_ctx,
- ppdesc);
-
- do_log(SMB_VFS_OP_GET_NT_ACL_AT,
- NT_STATUS_IS_OK(result),
- handle,
- "%s",
- smb_fname_str_do_log(handle->conn, smb_fname));
-
- return result;
-}
-
static NTSTATUS smb_full_audit_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
uint32_t security_info_sent,
const struct security_descriptor *psd)
.fget_dos_attributes_fn = smb_full_audit_fget_dos_attributes,
.fset_dos_attributes_fn = smb_full_audit_fset_dos_attributes,
.fget_nt_acl_fn = smb_full_audit_fget_nt_acl,
- .get_nt_acl_at_fn = smb_full_audit_get_nt_acl_at,
.fset_nt_acl_fn = smb_full_audit_fset_nt_acl,
.audit_file_fn = smb_full_audit_audit_file,
.sys_acl_get_file_fn = smb_full_audit_sys_acl_get_file,
return NT_STATUS_NOT_IMPLEMENTED;
}
-NTSTATUS vfs_not_implemented_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)
-{
- return NT_STATUS_NOT_IMPLEMENTED;
-}
-
NTSTATUS vfs_not_implemented_fset_nt_acl(vfs_handle_struct *handle, files_struct *fsp,
uint32_t security_info_sent,
const struct security_descriptor *psd)
/* NT ACL operations. */
.fget_nt_acl_fn = vfs_not_implemented_fget_nt_acl,
- .get_nt_acl_at_fn = vfs_not_implemented_get_nt_acl_at,
.fset_nt_acl_fn = vfs_not_implemented_fset_nt_acl,
/* POSIX ACL operations. */
return result;
}
-static NTSTATUS smb_time_audit_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)
-{
- NTSTATUS result;
- struct timespec ts1,ts2;
- double timediff;
-
- clock_gettime_mono(&ts1);
- result = SMB_VFS_NEXT_GET_NT_ACL_AT(handle,
- dirfsp,
- smb_fname,
- security_info,
- mem_ctx,
- ppdesc);
- clock_gettime_mono(&ts2);
- timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
-
- if (timediff > audit_timeout) {
- smb_time_audit_log_fname("get_nt_acl",
- timediff,
- smb_fname->base_name);
- }
-
- return result;
-}
-
static NTSTATUS smb_time_audit_fset_nt_acl(vfs_handle_struct *handle,
files_struct *fsp,
uint32_t security_info_sent,
.fget_dos_attributes_fn = smb_time_fget_dos_attributes,
.fset_dos_attributes_fn = smb_time_fset_dos_attributes,
.fget_nt_acl_fn = smb_time_audit_fget_nt_acl,
- .get_nt_acl_at_fn = smb_time_audit_get_nt_acl_at,
.fset_nt_acl_fn = smb_time_audit_fset_nt_acl,
.audit_file_fn = smb_time_audit_audit_file,
.sys_acl_get_file_fn = smb_time_audit_sys_acl_get_file,
mem_ctx, ppdesc);
}
-NTSTATUS smb_vfs_call_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)
-{
- VFS_FIND(get_nt_acl_at);
- return handle->fns->get_nt_acl_at_fn(handle,
- dirfsp,
- smb_fname,
- security_info,
- mem_ctx,
- ppdesc);
-}
-
NTSTATUS smb_vfs_call_fset_nt_acl(struct vfs_handle_struct *handle,
struct files_struct *fsp,
uint32_t security_info_sent,