From d9a352632038181cb35585184c726cd42db17f2c Mon Sep 17 00:00:00 2001 From: "Todd C. Miller" <Todd.Miller@courtesan.com> Date: Wed, 8 Sep 2010 09:47:00 -0400 Subject: [PATCH] Solaris BSM audit return EINVAL when auditing is not enabled, whereas OpenBSM returns ENOSYS. --- plugins/sudoers/bsm_audit.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/plugins/sudoers/bsm_audit.c b/plugins/sudoers/bsm_audit.c index 2b16f0510..787786fd3 100644 --- a/plugins/sudoers/bsm_audit.c +++ b/plugins/sudoers/bsm_audit.c @@ -32,6 +32,16 @@ #include "bsm_audit.h" +/* + * Solaris auditon() returns EINVAL if BSM audit not configured. + * OpenBSM returns ENOSYS for unimplemented options. + */ +#ifdef __sun__ +# define AUDIT_NOT_CONFIGURED EINVAL +#else +# define AUDIT_NOT_CONFIGURED ENOSYS +#endif + void log_error(int flags, const char *fmt, ...) __attribute__((__noreturn__)); static int @@ -72,7 +82,7 @@ bsm_audit_success(char **exec_args) * If we are not auditing, don't cut an audit record; just return. */ if (auditon(A_GETCOND, (caddr_t)&au_cond, sizeof(long)) < 0) { - if (errno == ENOSYS) + if (errno == AUDIT_NOT_CONFIGURED) return; log_error(0, "Could not determine audit condition"); } @@ -133,7 +143,7 @@ bsm_audit_failure(char **exec_args, char const *const fmt, va_list ap) * If we are not auditing, don't cut an audit record; just return. */ if (auditon(A_GETCOND, &au_cond, sizeof(long)) < 0) { - if (errno == ENOSYS) + if (errno == AUDIT_NOT_CONFIGURED) return; log_error(0, "Could not determine audit condition"); } -- 2.40.0