aaeb012fe4
Many of the syscalls mentioned in the audit code are not present for architectures that implement only the "standard" set of Linux syscalls (e.g. openat, but not open, etc.). This change adds proper #ifdefs for all those syscalls. Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Chris Metcalf <cmetcalf@tilera.com>
69 lines
1.2 KiB
C
69 lines
1.2 KiB
C
#include <linux/init.h>
|
|
#include <linux/types.h>
|
|
#include <linux/audit.h>
|
|
#include <asm/unistd.h>
|
|
|
|
static unsigned dir_class[] = {
|
|
#include <asm-generic/audit_dir_write.h>
|
|
~0U
|
|
};
|
|
|
|
static unsigned read_class[] = {
|
|
#include <asm-generic/audit_read.h>
|
|
~0U
|
|
};
|
|
|
|
static unsigned write_class[] = {
|
|
#include <asm-generic/audit_write.h>
|
|
~0U
|
|
};
|
|
|
|
static unsigned chattr_class[] = {
|
|
#include <asm-generic/audit_change_attr.h>
|
|
~0U
|
|
};
|
|
|
|
static unsigned signal_class[] = {
|
|
#include <asm-generic/audit_signal.h>
|
|
~0U
|
|
};
|
|
|
|
int audit_classify_arch(int arch)
|
|
{
|
|
return 0;
|
|
}
|
|
|
|
int audit_classify_syscall(int abi, unsigned syscall)
|
|
{
|
|
switch(syscall) {
|
|
#ifdef __NR_open
|
|
case __NR_open:
|
|
return 2;
|
|
#endif
|
|
#ifdef __NR_openat
|
|
case __NR_openat:
|
|
return 3;
|
|
#endif
|
|
#ifdef __NR_socketcall
|
|
case __NR_socketcall:
|
|
return 4;
|
|
#endif
|
|
case __NR_execve:
|
|
return 5;
|
|
default:
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
static int __init audit_classes_init(void)
|
|
{
|
|
audit_register_class(AUDIT_CLASS_WRITE, write_class);
|
|
audit_register_class(AUDIT_CLASS_READ, read_class);
|
|
audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
|
|
audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
|
|
audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
|
|
return 0;
|
|
}
|
|
|
|
__initcall(audit_classes_init);
|