diff options
-rw-r--r-- | source3/modules/vfs_full_audit.c | 46 | ||||
-rw-r--r-- | source3/smbd/vfs-wrap.c | 2 |
2 files changed, 45 insertions, 3 deletions
diff --git a/source3/modules/vfs_full_audit.c b/source3/modules/vfs_full_audit.c index e91c1813a8..09215d1e8d 100644 --- a/source3/modules/vfs_full_audit.c +++ b/source3/modules/vfs_full_audit.c @@ -86,6 +86,12 @@ static DIR *smb_full_audit_opendir(vfs_handle_struct *handle, connection_struct const char *fname); static SMB_STRUCT_DIRENT *smb_full_audit_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp); +static void smb_full_audit_seekdir(vfs_handle_struct *handle, connection_struct *conn, + DIR *dirp, long offset); +static long smb_full_audit_telldir(vfs_handle_struct *handle, connection_struct *conn, + DIR *dirp); +static void smb_full_audit_rewinddir(vfs_handle_struct *handle, connection_struct *conn, + DIR *dirp); static int smb_full_audit_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode); static int smb_full_audit_rmdir(vfs_handle_struct *handle, connection_struct *conn, @@ -304,6 +310,12 @@ static vfs_op_tuple audit_op_tuples[] = { SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_readdir), SMB_VFS_OP_READDIR, SMB_VFS_LAYER_LOGGER}, + {SMB_VFS_OP(smb_full_audit_seekdir), SMB_VFS_OP_SEEKDIR, + SMB_VFS_LAYER_LOGGER}, + {SMB_VFS_OP(smb_full_audit_telldir), SMB_VFS_OP_TELLDIR, + SMB_VFS_LAYER_LOGGER}, + {SMB_VFS_OP(smb_full_audit_rewinddir), SMB_VFS_OP_REWINDDIR, + SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_mkdir), SMB_VFS_OP_MKDIR, SMB_VFS_LAYER_LOGGER}, {SMB_VFS_OP(smb_full_audit_rmdir), SMB_VFS_OP_RMDIR, @@ -788,10 +800,10 @@ static DIR *smb_full_audit_opendir(vfs_handle_struct *handle, connection_struct return result; } -static struct dirent *smb_full_audit_readdir(vfs_handle_struct *handle, +static SMB_STRUCT_DIRENT *smb_full_audit_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp) { - struct dirent *result; + SMB_STRUCT_DIRENT *result; result = SMB_VFS_NEXT_READDIR(handle, conn, dirp); @@ -803,6 +815,36 @@ static struct dirent *smb_full_audit_readdir(vfs_handle_struct *handle, return result; } +static void smb_full_audit_seekdir(vfs_handle_struct *handle, connection_struct *conn, + DIR *dirp, long offset) +{ + SMB_VFS_NEXT_SEEKDIR(handle, conn, dirp, offset); + + do_log(SMB_VFS_OP_SEEKDIR, True, handle, ""); + return; +} + +static long smb_full_audit_telldir(vfs_handle_struct *handle, connection_struct *conn, + DIR *dirp) +{ + long result; + + result = SMB_VFS_NEXT_TELLDIR(handle, conn, dirp); + + do_log(SMB_VFS_OP_OPENDIR, True, handle, ""); + + return result; +} + +static void smb_full_audit_rewinddir(vfs_handle_struct *handle, connection_struct *conn, + DIR *dirp) +{ + SMB_VFS_NEXT_REWINDDIR(handle, conn, dirp); + + do_log(SMB_VFS_OP_REWINDDIR, True, handle, ""); + return; +} + static int smb_full_audit_mkdir(vfs_handle_struct *handle, connection_struct *conn, const char *path, mode_t mode) { diff --git a/source3/smbd/vfs-wrap.c b/source3/smbd/vfs-wrap.c index 1444d0e875..abc17a37a2 100644 --- a/source3/smbd/vfs-wrap.c +++ b/source3/smbd/vfs-wrap.c @@ -100,7 +100,7 @@ DIR *vfswrap_opendir(vfs_handle_struct *handle, connection_struct *conn, const c SMB_STRUCT_DIRENT *vfswrap_readdir(vfs_handle_struct *handle, connection_struct *conn, DIR *dirp) { - struct dirent *result; + SMB_STRUCT_DIRENT *result; START_PROFILE(syscall_readdir); result = sys_readdir(dirp); |