linux/lib/audit.c
<<
>>
Prefs
   1#include <linux/init.h>
   2#include <linux/types.h>
   3#include <linux/audit.h>
   4#include <asm/unistd.h>
   5
   6static unsigned dir_class[] = {
   7#include <asm-generic/audit_dir_write.h>
   8~0U
   9};
  10
  11static unsigned read_class[] = {
  12#include <asm-generic/audit_read.h>
  13~0U
  14};
  15
  16static unsigned write_class[] = {
  17#include <asm-generic/audit_write.h>
  18~0U
  19};
  20
  21static unsigned chattr_class[] = {
  22#include <asm-generic/audit_change_attr.h>
  23~0U
  24};
  25
  26static unsigned signal_class[] = {
  27#include <asm-generic/audit_signal.h>
  28~0U
  29};
  30
  31int audit_classify_arch(int arch)
  32{
  33        if (audit_is_compat(arch))
  34                return 1;
  35        else
  36                return 0;
  37}
  38
  39int audit_classify_syscall(int abi, unsigned syscall)
  40{
  41        if (audit_is_compat(abi))
  42                return audit_classify_compat_syscall(abi, syscall);
  43
  44        switch(syscall) {
  45#ifdef __NR_open
  46        case __NR_open:
  47                return 2;
  48#endif
  49#ifdef __NR_openat
  50        case __NR_openat:
  51                return 3;
  52#endif
  53#ifdef __NR_socketcall
  54        case __NR_socketcall:
  55                return 4;
  56#endif
  57#ifdef __NR_execveat
  58        case __NR_execveat:
  59#endif
  60        case __NR_execve:
  61                return 5;
  62        default:
  63                return 0;
  64        }
  65}
  66
  67static int __init audit_classes_init(void)
  68{
  69#ifdef CONFIG_AUDIT_COMPAT_GENERIC
  70        audit_register_class(AUDIT_CLASS_WRITE_32, compat_write_class);
  71        audit_register_class(AUDIT_CLASS_READ_32, compat_read_class);
  72        audit_register_class(AUDIT_CLASS_DIR_WRITE_32, compat_dir_class);
  73        audit_register_class(AUDIT_CLASS_CHATTR_32, compat_chattr_class);
  74        audit_register_class(AUDIT_CLASS_SIGNAL_32, compat_signal_class);
  75#endif
  76        audit_register_class(AUDIT_CLASS_WRITE, write_class);
  77        audit_register_class(AUDIT_CLASS_READ, read_class);
  78        audit_register_class(AUDIT_CLASS_DIR_WRITE, dir_class);
  79        audit_register_class(AUDIT_CLASS_CHATTR, chattr_class);
  80        audit_register_class(AUDIT_CLASS_SIGNAL, signal_class);
  81        return 0;
  82}
  83
  84__initcall(audit_classes_init);
  85