return result;
}
+static int audit_openat(vfs_handle_struct *handle,
+ const struct files_struct *dirfsp,
+ const struct smb_filename *smb_fname,
+ files_struct *fsp,
+ int flags,
+ mode_t mode)
+{
+ int ret;
+
+ ret = SMB_VFS_NEXT_OPENAT(handle, dirfsp, smb_fname, fsp, flags, mode);
+
+ if (lp_syslog() > 0) {
+ syslog(audit_syslog_priority(handle),
+ "openat %s/%s (fd %d) %s%s%s\n",
+ smb_fname_str_dbg(fsp->fsp_name),
+ smb_fname->base_name,
+ ret,
+ ((flags & O_WRONLY) || (flags & O_RDWR)) ?
+ "for writing " : "",
+ (ret < 0) ? "failed: " : "",
+ (ret < 0) ? strerror(errno) : "");
+ }
+ DEBUG(2, ("vfs_extd_audit: open %s/%s %s %s\n",
+ smb_fname_str_dbg(fsp->fsp_name),
+ smb_fname_str_dbg(smb_fname),
+ (ret < 0) ? "failed: " : "",
+ (ret < 0) ? strerror(errno) : ""));
+
+ return ret;
+}
+
static int audit_close(vfs_handle_struct *handle, files_struct *fsp)
{
int result;
.disconnect_fn = audit_disconnect,
.mkdirat_fn = audit_mkdirat,
.open_fn = audit_open,
+ .openat_fn = audit_openat,
.close_fn = audit_close,
.renameat_fn = audit_renameat,
.unlinkat_fn = audit_unlinkat,