version 1.1.1.2, 2012/05/29 12:26:49
|
version 1.1.1.6, 2014/06/15 16:12:54
|
Line 1
|
Line 1
|
/* |
/* |
* Copyright (c) 2010 Todd C. Miller <Todd.Miller@courtesan.com> | * Copyright (c) 2010-2013 Todd C. Miller <Todd.Miller@courtesan.com> |
* |
* |
* Permission to use, copy, modify, and distribute this software for any |
* Permission to use, copy, modify, and distribute this software for any |
* purpose with or without fee is hereby granted, provided that the above |
* purpose with or without fee is hereby granted, provided that the above |
Line 31
|
Line 31
|
#include <string.h> |
#include <string.h> |
#include <libaudit.h> |
#include <libaudit.h> |
|
|
|
#define DEFAULT_TEXT_DOMAIN "sudoers" |
|
#include "gettext.h" /* must be included before missing.h */ |
|
|
#include "missing.h" |
#include "missing.h" |
#include "error.h" | #include "fatal.h" |
#include "alloc.h" |
#include "alloc.h" |
#include "gettext.h" |
|
#include "sudo_debug.h" |
#include "sudo_debug.h" |
#include "linux_audit.h" |
#include "linux_audit.h" |
|
|
Line 54 static linux_audit_open(void)
|
Line 56 static linux_audit_open(void)
|
if (au_fd == -1) { |
if (au_fd == -1) { |
/* Kernel may not have audit support. */ |
/* Kernel may not have audit support. */ |
if (errno != EINVAL && errno != EPROTONOSUPPORT && errno != EAFNOSUPPORT) |
if (errno != EINVAL && errno != EPROTONOSUPPORT && errno != EAFNOSUPPORT) |
error(1, _("unable to open audit system")); | fatal(U_("unable to open audit system")); |
} else { |
} else { |
(void)fcntl(au_fd, F_SETFD, FD_CLOEXEC); |
(void)fcntl(au_fd, F_SETFD, FD_CLOEXEC); |
} |
} |
Line 78 linux_audit_command(char *argv[], int result)
|
Line 80 linux_audit_command(char *argv[], int result)
|
command = cp = emalloc(size); |
command = cp = emalloc(size); |
for (av = argv; *av != NULL; av++) { |
for (av = argv; *av != NULL; av++) { |
n = strlcpy(cp, *av, size - (cp - command)); |
n = strlcpy(cp, *av, size - (cp - command)); |
if (n >= size - (cp - command)) | if (n >= size - (cp - command)) { |
errorx(1, _("internal error, linux_audit_command() overflow")); | fatalx(U_("internal error, %s overflow"), |
| "linux_audit_command()"); |
| } |
cp += n; |
cp += n; |
*cp++ = ' '; |
*cp++ = ' '; |
} |
} |
Line 88 linux_audit_command(char *argv[], int result)
|
Line 92 linux_audit_command(char *argv[], int result)
|
/* Log command, ignoring ECONNREFUSED on error. */ |
/* Log command, ignoring ECONNREFUSED on error. */ |
rc = audit_log_user_command(au_fd, AUDIT_USER_CMD, command, NULL, result); |
rc = audit_log_user_command(au_fd, AUDIT_USER_CMD, command, NULL, result); |
if (rc <= 0 && errno != ECONNREFUSED) |
if (rc <= 0 && errno != ECONNREFUSED) |
warning(_("unable to send audit message")); | warning(U_("unable to send audit message")); |
|
|
efree(command); |
efree(command); |
|
|