s3: VFS: vfs_audit. Implement renameat().
[garming/samba-autobuild/.git] / source3 / modules / vfs_audit.c
index 91610377c1c6991c6b4104ef1c03a2fcb5580d07..81bb43ec27a767423c9a09a6d2b45397ba0e170c 100644 (file)
@@ -273,6 +273,30 @@ static int audit_rename(vfs_handle_struct *handle,
        return result;    
 }
 
+static int audit_renameat(vfs_handle_struct *handle,
+                       files_struct *srcfsp,
+                       const struct smb_filename *smb_fname_src,
+                       files_struct *dstfsp,
+                       const struct smb_filename *smb_fname_dst)
+{
+       int result;
+
+       result = SMB_VFS_NEXT_RENAMEAT(handle,
+                       srcfsp,
+                       smb_fname_src,
+                       dstfsp,
+                       smb_fname_dst);
+
+       syslog(audit_syslog_priority(handle), "renameat %s -> %s %s%s\n",
+              smb_fname_src->base_name,
+              smb_fname_dst->base_name,
+              (result < 0) ? "failed: " : "",
+              (result < 0) ? strerror(errno) : "");
+
+       return result;
+}
+
+
 static int audit_unlink(vfs_handle_struct *handle,
                        const struct smb_filename *smb_fname)
 {
@@ -327,6 +351,7 @@ static struct vfs_fn_pointers vfs_audit_fns = {
        .open_fn = audit_open,
        .close_fn = audit_close,
        .rename_fn = audit_rename,
+       .renameat_fn = audit_renameat,
        .unlink_fn = audit_unlink,
        .chmod_fn = audit_chmod,
        .fchmod_fn = audit_fchmod,