SMB_VFS_OP_LINUX_SETLEASE,
SMB_VFS_OP_GETLOCK,
SMB_VFS_OP_SYMLINK,
+ SMB_VFS_OP_SYMLINKAT,
SMB_VFS_OP_READLINKAT,
SMB_VFS_OP_LINKAT,
SMB_VFS_OP_MKNODAT,
{ SMB_VFS_OP_LINUX_SETLEASE, "linux_setlease" },
{ SMB_VFS_OP_GETLOCK, "getlock" },
{ SMB_VFS_OP_SYMLINK, "symlink" },
+ { SMB_VFS_OP_SYMLINKAT, "symlinkat" },
{ SMB_VFS_OP_READLINKAT,"readlinkat" },
{ SMB_VFS_OP_LINKAT, "linkat" },
{ SMB_VFS_OP_MKNODAT, "mknodat" },
return result;
}
+static int smb_full_audit_symlinkat(vfs_handle_struct *handle,
+ const char *link_contents,
+ struct files_struct *dirfsp,
+ const struct smb_filename *new_smb_fname)
+{
+ int result;
+
+ result = SMB_VFS_NEXT_SYMLINKAT(handle,
+ link_contents,
+ dirfsp,
+ new_smb_fname);
+
+ do_log(SMB_VFS_OP_SYMLINKAT, (result >= 0), handle,
+ "%s|%s", link_contents, new_smb_fname->base_name);
+
+ return result;
+}
+
static int smb_full_audit_readlinkat(vfs_handle_struct *handle,
files_struct *dirfsp,
const struct smb_filename *smb_fname,
.linux_setlease_fn = smb_full_audit_linux_setlease,
.getlock_fn = smb_full_audit_getlock,
.symlink_fn = smb_full_audit_symlink,
+ .symlinkat_fn = smb_full_audit_symlinkat,
.readlinkat_fn = smb_full_audit_readlinkat,
.linkat_fn = smb_full_audit_linkat,
.mknodat_fn = smb_full_audit_mknodat,