]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: VFS: vfs_extd_audit. Implement renameat().
authorJeremy Allison <jra@samba.org>
Fri, 9 Aug 2019 21:19:09 +0000 (14:19 -0700)
committerJeremy Allison <jra@samba.org>
Fri, 16 Aug 2019 19:52:32 +0000 (19:52 +0000)
Currently identical to rename().

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
source3/modules/vfs_extd_audit.c

index 7bbf30e9efd83a8cf2e3a2eac887caf44dd9e8bf..d8ed3f6fcd56a9f8fb6cecc15aafa46a9d988ac0 100644 (file)
@@ -320,6 +320,36 @@ 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);
+
+       if (lp_syslog() > 0) {
+               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) : "");
+       }
+       DEBUG(1, ("vfs_extd_audit: renameat old: %s newname: %s  %s %s\n",
+               smb_fname_str_dbg(smb_fname_src),
+               smb_fname_str_dbg(smb_fname_dst),
+              (result < 0) ? "failed: " : "",
+              (result < 0) ? strerror(errno) : ""));
+
+       return result;
+}
+
 static int audit_unlink(vfs_handle_struct *handle,
                        const struct smb_filename *smb_fname)
 {
@@ -392,6 +422,7 @@ static struct vfs_fn_pointers vfs_extd_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,