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