version 1.1.1.1, 2012/02/21 16:23:02
|
version 1.1.1.2, 2012/05/29 12:26:49
|
Line 35
|
Line 35
|
#include "error.h" |
#include "error.h" |
#include "alloc.h" |
#include "alloc.h" |
#include "gettext.h" |
#include "gettext.h" |
|
#include "sudo_debug.h" |
#include "linux_audit.h" |
#include "linux_audit.h" |
|
|
/* |
/* |
* Open audit connection if possible. |
* Open audit connection if possible. |
* Returns audit fd on success and -1 on failure. |
* Returns audit fd on success and -1 on failure. |
*/ |
*/ |
static int | int |
linux_audit_open(void) | static linux_audit_open(void) |
{ |
{ |
static int au_fd = -1; |
static int au_fd = -1; |
|
debug_decl(linux_audit_open, SUDO_DEBUG_AUDIT) |
|
|
if (au_fd != -1) |
if (au_fd != -1) |
return au_fd; | debug_return_int(au_fd); |
au_fd = audit_open(); |
au_fd = audit_open(); |
if (au_fd == -1) { |
if (au_fd == -1) { |
/* Kernel may not have audit support. */ |
/* Kernel may not have audit support. */ |
Line 56 linux_audit_open(void)
|
Line 58 linux_audit_open(void)
|
} else { |
} else { |
(void)fcntl(au_fd, F_SETFD, FD_CLOEXEC); |
(void)fcntl(au_fd, F_SETFD, FD_CLOEXEC); |
} |
} |
return au_fd; | debug_return_int(au_fd); |
} |
} |
|
|
int |
int |
Line 65 linux_audit_command(char *argv[], int result)
|
Line 67 linux_audit_command(char *argv[], int result)
|
int au_fd, rc; |
int au_fd, rc; |
char *command, *cp, **av; |
char *command, *cp, **av; |
size_t size, n; |
size_t size, n; |
|
debug_decl(linux_audit_command, SUDO_DEBUG_AUDIT) |
|
|
if ((au_fd = linux_audit_open()) == -1) |
if ((au_fd = linux_audit_open()) == -1) |
return -1; | debug_return_int(-1); |
|
|
/* Convert argv to a flat string. */ |
/* Convert argv to a flat string. */ |
for (size = 0, av = argv; *av != NULL; av++) |
for (size = 0, av = argv; *av != NULL; av++) |
Line 89 linux_audit_command(char *argv[], int result)
|
Line 92 linux_audit_command(char *argv[], int result)
|
|
|
efree(command); |
efree(command); |
|
|
return rc; | debug_return_int(rc); |
} |
} |