2006-07-01 11:56:16 +04:00
# 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
} ;
2006-09-01 03:05:56 +04:00
static unsigned read_class [ ] = {
# include <asm-generic/audit_read.h>
~ 0U
} ;
static unsigned write_class [ ] = {
# include <asm-generic/audit_write.h>
~ 0U
} ;
2006-07-01 11:56:16 +04:00
static unsigned chattr_class [ ] = {
# include <asm-generic/audit_change_attr.h>
~ 0U
} ;
2006-09-01 03:26:40 +04:00
int audit_classify_syscall ( int abi , unsigned syscall )
{
# ifdef CONFIG_IA32_SUPPORT
extern int ia32_classify_syscall ( unsigned ) ;
if ( abi = = AUDIT_ARCH_I386 )
return ia32_classify_syscall ( syscall ) ;
# endif
switch ( syscall ) {
case __NR_open :
return 2 ;
case __NR_openat :
return 3 ;
case __NR_execve :
return 5 ;
default :
return 0 ;
}
}
2006-07-01 11:56:16 +04:00
static int __init audit_classes_init ( void )
{
# ifdef CONFIG_IA32_SUPPORT
extern __u32 ia32_dir_class [ ] ;
2006-09-01 03:05:56 +04:00
extern __u32 ia32_write_class [ ] ;
extern __u32 ia32_read_class [ ] ;
2006-07-01 11:56:16 +04:00
extern __u32 ia32_chattr_class [ ] ;
2006-09-01 03:05:56 +04:00
audit_register_class ( AUDIT_CLASS_WRITE_32 , ia32_write_class ) ;
audit_register_class ( AUDIT_CLASS_READ_32 , ia32_read_class ) ;
2006-07-01 11:56:16 +04:00
audit_register_class ( AUDIT_CLASS_DIR_WRITE_32 , ia32_dir_class ) ;
audit_register_class ( AUDIT_CLASS_CHATTR_32 , ia32_chattr_class ) ;
# endif
2006-09-01 03:05:56 +04:00
audit_register_class ( AUDIT_CLASS_WRITE , write_class ) ;
audit_register_class ( AUDIT_CLASS_READ , read_class ) ;
2006-07-01 11:56:16 +04:00
audit_register_class ( AUDIT_CLASS_DIR_WRITE , dir_class ) ;
audit_register_class ( AUDIT_CLASS_CHATTR , chattr_class ) ;
return 0 ;
}
__initcall ( audit_classes_init ) ;