.--. .-, .-..-.__
.'(`.-` \_.-'-./` |\_( "\__
__.>\ '; _;---,._| / __/`'--)
/.--. : |/' _.--.<| / | |
_..-' `\ /' /` /_/ _/_/
>_.-``-. `Y /' _;---.`|/))))
'` .-''. \|: .' __, .-'"`
.'--._ `-: \/: /' '.\ _|_
/.'`\ :; /' `- `-|-`
-` | | |
:.; : | .-'~^~`-.
|: | .' _ _ `.
|:. | | |_) | |_) |
:. : | | | \ | | |
: ; | | |
: ; | | SMB_VFS |
: ; | | SYS_ACL |
: ; | |DELETE_DEF |
.jgs. : ; | FILE |
-."-/\\\/:::. `\."-._'."-"_\\-| |///."-
" -."-.\\"-."//.-".`-."_\\-.".-\\`=.........=`//-".
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Noel Power <npower@samba.org>
-static int skel_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- errno = ENOSYS;
- return -1;
-}
-
static int skel_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
static int skel_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
.sys_acl_blob_get_file_fn = skel_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = skel_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = skel_sys_acl_set_fd,
.sys_acl_blob_get_file_fn = skel_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = skel_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = skel_sys_acl_set_fd,
- .sys_acl_delete_def_file_fn = skel_sys_acl_delete_def_file,
.sys_acl_delete_def_fd_fn = skel_sys_acl_delete_def_fd,
/* EA operations. */
.sys_acl_delete_def_fd_fn = skel_sys_acl_delete_def_fd,
/* EA operations. */
return SMB_VFS_NEXT_SYS_ACL_SET_FD(handle, fsp, type, theacl);
}
return SMB_VFS_NEXT_SYS_ACL_SET_FD(handle, fsp, type, theacl);
}
-static int skel_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- return SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FILE(handle, smb_fname);
-}
-
static int skel_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
static int skel_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
.sys_acl_blob_get_file_fn = skel_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = skel_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = skel_sys_acl_set_fd,
.sys_acl_blob_get_file_fn = skel_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = skel_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = skel_sys_acl_set_fd,
- .sys_acl_delete_def_file_fn = skel_sys_acl_delete_def_file,
.sys_acl_delete_def_fd_fn = skel_sys_acl_delete_def_fd,
/* EA operations. */
.sys_acl_delete_def_fd_fn = skel_sys_acl_delete_def_fd,
/* EA operations. */
* Version 45 - Add SMB_VFS_FREADDIR_ATTR
* Version 45 - Remove SMB_VFS_READDIR_ATTR
* Version 45 - Add SMB_VFS_SYS_ACL_DELETE_DEF_FD
* Version 45 - Add SMB_VFS_FREADDIR_ATTR
* Version 45 - Remove SMB_VFS_READDIR_ATTR
* Version 45 - Add SMB_VFS_SYS_ACL_DELETE_DEF_FD
+ * Version 45 - Remove SMB_VFS_SYS_ACL_DELETE_DEF_FILE
*/
#define SMB_VFS_INTERFACE_VERSION 45
*/
#define SMB_VFS_INTERFACE_VERSION 45
struct files_struct *fsp,
SMB_ACL_TYPE_T type,
SMB_ACL_T theacl);
struct files_struct *fsp,
SMB_ACL_TYPE_T type,
SMB_ACL_T theacl);
- int (*sys_acl_delete_def_file_fn)(struct vfs_handle_struct *handle,
- const struct smb_filename *smb_fname);
int (*sys_acl_delete_def_fd_fn)(struct vfs_handle_struct *handle,
struct files_struct *fsp);
int (*sys_acl_delete_def_fd_fn)(struct vfs_handle_struct *handle,
struct files_struct *fsp);
struct files_struct *fsp,
SMB_ACL_TYPE_T type,
SMB_ACL_T theacl);
struct files_struct *fsp,
SMB_ACL_TYPE_T type,
SMB_ACL_T theacl);
-int smb_vfs_call_sys_acl_delete_def_file(struct vfs_handle_struct *handle,
- const struct smb_filename *smb_fname);
int smb_vfs_call_sys_acl_delete_def_fd(struct vfs_handle_struct *handle,
struct files_struct *fsp);
ssize_t smb_vfs_call_getxattr(struct vfs_handle_struct *handle,
int smb_vfs_call_sys_acl_delete_def_fd(struct vfs_handle_struct *handle,
struct files_struct *fsp);
ssize_t smb_vfs_call_getxattr(struct vfs_handle_struct *handle,
struct files_struct *fsp,
SMB_ACL_TYPE_T type,
SMB_ACL_T theacl);
struct files_struct *fsp,
SMB_ACL_TYPE_T type,
SMB_ACL_T theacl);
-int vfs_not_implemented_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname);
int vfs_not_implemented_sys_acl_delete_def_fd(vfs_handle_struct *handle,
files_struct *fsp);
ssize_t vfs_not_implemented_getxattr(vfs_handle_struct *handle,
int vfs_not_implemented_sys_acl_delete_def_fd(vfs_handle_struct *handle,
files_struct *fsp);
ssize_t vfs_not_implemented_getxattr(vfs_handle_struct *handle,
#define SMB_VFS_NEXT_SYS_ACL_SET_FD(handle, fsp, type, theacl) \
smb_vfs_call_sys_acl_set_fd((handle)->next, (fsp), (type), (theacl))
#define SMB_VFS_NEXT_SYS_ACL_SET_FD(handle, fsp, type, theacl) \
smb_vfs_call_sys_acl_set_fd((handle)->next, (fsp), (type), (theacl))
-#define SMB_VFS_SYS_ACL_DELETE_DEF_FILE(conn, smb_fname) \
- smb_vfs_call_sys_acl_delete_def_file((conn)->vfs_handles, (smb_fname))
-#define SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FILE(handle, smb_fname) \
- smb_vfs_call_sys_acl_delete_def_file((handle)->next, (smb_fname))
-
#define SMB_VFS_SYS_ACL_DELETE_DEF_FD(fsp) \
smb_vfs_call_sys_acl_delete_def_fd((fsp)->conn->vfs_handles, (fsp))
#define SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FD(handle, fsp) \
#define SMB_VFS_SYS_ACL_DELETE_DEF_FD(fsp) \
smb_vfs_call_sys_acl_delete_def_fd((fsp)->conn->vfs_handles, (fsp))
#define SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FD(handle, fsp) \
-static int vfswrap_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- return sys_acl_delete_def_file(handle, smb_fname);
-}
-
static int vfswrap_sys_acl_delete_def_fd(vfs_handle_struct *handle,
files_struct *fsp)
{
static int vfswrap_sys_acl_delete_def_fd(vfs_handle_struct *handle,
files_struct *fsp)
{
.sys_acl_blob_get_file_fn = posix_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = posix_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = vfswrap_sys_acl_set_fd,
.sys_acl_blob_get_file_fn = posix_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = posix_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = vfswrap_sys_acl_set_fd,
- .sys_acl_delete_def_file_fn = vfswrap_sys_acl_delete_def_file,
.sys_acl_delete_def_fd_fn = vfswrap_sys_acl_delete_def_fd,
/* EA operations. */
.sys_acl_delete_def_fd_fn = vfswrap_sys_acl_delete_def_fd,
/* EA operations. */
SMB_VFS_OP_SYS_ACL_BLOB_GET_FILE,
SMB_VFS_OP_SYS_ACL_BLOB_GET_FD,
SMB_VFS_OP_SYS_ACL_SET_FD,
SMB_VFS_OP_SYS_ACL_BLOB_GET_FILE,
SMB_VFS_OP_SYS_ACL_BLOB_GET_FD,
SMB_VFS_OP_SYS_ACL_SET_FD,
- SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE,
SMB_VFS_OP_SYS_ACL_DELETE_DEF_FD,
/* EA operations. */
SMB_VFS_OP_SYS_ACL_DELETE_DEF_FD,
/* EA operations. */
{ SMB_VFS_OP_SYS_ACL_BLOB_GET_FILE, "sys_acl_blob_get_file" },
{ SMB_VFS_OP_SYS_ACL_BLOB_GET_FD, "sys_acl_blob_get_fd" },
{ SMB_VFS_OP_SYS_ACL_SET_FD, "sys_acl_set_fd" },
{ SMB_VFS_OP_SYS_ACL_BLOB_GET_FILE, "sys_acl_blob_get_file" },
{ SMB_VFS_OP_SYS_ACL_BLOB_GET_FD, "sys_acl_blob_get_fd" },
{ SMB_VFS_OP_SYS_ACL_SET_FD, "sys_acl_set_fd" },
- { SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE, "sys_acl_delete_def_file" },
{ SMB_VFS_OP_SYS_ACL_DELETE_DEF_FD, "sys_acl_delete_def_fd" },
{ SMB_VFS_OP_GETXATTR, "getxattr" },
{ SMB_VFS_OP_GETXATTRAT_SEND, "getxattrat_send" },
{ SMB_VFS_OP_SYS_ACL_DELETE_DEF_FD, "sys_acl_delete_def_fd" },
{ SMB_VFS_OP_GETXATTR, "getxattr" },
{ SMB_VFS_OP_GETXATTRAT_SEND, "getxattrat_send" },
-static int smb_full_audit_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- int result;
-
- result = SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FILE(handle, smb_fname);
-
- do_log(SMB_VFS_OP_SYS_ACL_DELETE_DEF_FILE,
- (result >= 0),
- handle,
- "%s",
- smb_fname_str_do_log(handle->conn, smb_fname));
-
- return result;
-}
-
static int smb_full_audit_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
static int smb_full_audit_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
.sys_acl_blob_get_file_fn = smb_full_audit_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = smb_full_audit_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = smb_full_audit_sys_acl_set_fd,
.sys_acl_blob_get_file_fn = smb_full_audit_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = smb_full_audit_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = smb_full_audit_sys_acl_set_fd,
- .sys_acl_delete_def_file_fn = smb_full_audit_sys_acl_delete_def_file,
.sys_acl_delete_def_fd_fn = smb_full_audit_sys_acl_delete_def_fd,
.getxattr_fn = smb_full_audit_getxattr,
.getxattrat_send_fn = smb_full_audit_getxattrat_send,
.sys_acl_delete_def_fd_fn = smb_full_audit_sys_acl_delete_def_fd,
.getxattr_fn = smb_full_audit_getxattr,
.getxattrat_send_fn = smb_full_audit_getxattrat_send,
-int vfs_not_implemented_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- errno = ENOSYS;
- return -1;
-}
-
int vfs_not_implemented_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
int vfs_not_implemented_sys_acl_delete_def_fd(vfs_handle_struct *handle,
struct files_struct *fsp)
{
.sys_acl_blob_get_file_fn = vfs_not_implemented_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = vfs_not_implemented_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = vfs_not_implemented_sys_acl_set_fd,
.sys_acl_blob_get_file_fn = vfs_not_implemented_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = vfs_not_implemented_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = vfs_not_implemented_sys_acl_set_fd,
- .sys_acl_delete_def_file_fn = vfs_not_implemented_sys_acl_delete_def_file,
.sys_acl_delete_def_fd_fn = vfs_not_implemented_sys_acl_delete_def_fd,
/* EA operations. */
.sys_acl_delete_def_fd_fn = vfs_not_implemented_sys_acl_delete_def_fd,
/* EA operations. */
-static int smb_time_audit_sys_acl_delete_def_file(vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- int result;
- struct timespec ts1,ts2;
- double timediff;
-
- clock_gettime_mono(&ts1);
- result = SMB_VFS_NEXT_SYS_ACL_DELETE_DEF_FILE(handle, smb_fname);
- clock_gettime_mono(&ts2);
- timediff = nsec_time_diff(&ts2,&ts1)*1.0e-9;
-
- if (timediff > audit_timeout) {
- smb_time_audit_log_fname("sys_acl_delete_def_file", timediff,
- smb_fname->base_name);
- }
-
- return result;
-}
-
static int smb_time_audit_sys_acl_delete_def_fd(vfs_handle_struct *handle,
files_struct *fsp)
{
static int smb_time_audit_sys_acl_delete_def_fd(vfs_handle_struct *handle,
files_struct *fsp)
{
.sys_acl_blob_get_file_fn = smb_time_audit_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = smb_time_audit_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = smb_time_audit_sys_acl_set_fd,
.sys_acl_blob_get_file_fn = smb_time_audit_sys_acl_blob_get_file,
.sys_acl_blob_get_fd_fn = smb_time_audit_sys_acl_blob_get_fd,
.sys_acl_set_fd_fn = smb_time_audit_sys_acl_set_fd,
- .sys_acl_delete_def_file_fn = smb_time_audit_sys_acl_delete_def_file,
.sys_acl_delete_def_fd_fn = smb_time_audit_sys_acl_delete_def_fd,
.getxattr_fn = smb_time_audit_getxattr,
.getxattrat_send_fn = smb_time_audit_getxattrat_send,
.sys_acl_delete_def_fd_fn = smb_time_audit_sys_acl_delete_def_fd,
.getxattr_fn = smb_time_audit_getxattr,
.getxattrat_send_fn = smb_time_audit_getxattrat_send,
return handle->fns->sys_acl_set_fd_fn(handle, fsp, type, theacl);
}
return handle->fns->sys_acl_set_fd_fn(handle, fsp, type, theacl);
}
-int smb_vfs_call_sys_acl_delete_def_file(struct vfs_handle_struct *handle,
- const struct smb_filename *smb_fname)
-{
- VFS_FIND(sys_acl_delete_def_file);
- return handle->fns->sys_acl_delete_def_file_fn(handle, smb_fname);
-}
-
int smb_vfs_call_sys_acl_delete_def_fd(struct vfs_handle_struct *handle,
struct files_struct *fsp)
{
int smb_vfs_call_sys_acl_delete_def_fd(struct vfs_handle_struct *handle,
struct files_struct *fsp)
{