return result;
}
+static int audit_openat(vfs_handle_struct *handle,
+ const struct files_struct *dirfsp,
+ const struct smb_filename *smb_fname,
+ struct files_struct *fsp,
+ int flags,
+ mode_t mode)
+{
+ int result;
+
+ result = SMB_VFS_NEXT_OPENAT(handle, dirfsp, smb_fname, fsp, flags, mode);
+
+ syslog(audit_syslog_priority(handle),
+ "openat %s (fd %d) %s%s%s\n",
+ fsp_str_dbg(fsp), result,
+ ((flags & O_WRONLY) || (flags & O_RDWR)) ? "for writing " : "",
+ (result < 0) ? "failed: " : "",
+ (result < 0) ? strerror(errno) : "");
+
+ return result;
+}
+
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,