diff options
-rw-r--r-- | include/linux/audit.h | 17 | ||||
-rw-r--r-- | kernel/audit.c | 20 | ||||
-rw-r--r-- | security/selinux/nlmsgtab.c | 17 |
3 files changed, 11 insertions, 43 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h index 2f5dc60f8bbd..17ea5d522d81 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
@@ -51,14 +51,8 @@ | |||
51 | #define AUDIT_WATCH_LIST 1009 /* List all file/dir watches */ | 51 | #define AUDIT_WATCH_LIST 1009 /* List all file/dir watches */ |
52 | #define AUDIT_SIGNAL_INFO 1010 /* Get info about sender of signal to auditd */ | 52 | #define AUDIT_SIGNAL_INFO 1010 /* Get info about sender of signal to auditd */ |
53 | 53 | ||
54 | #define AUDIT_USER_AUTH 1100 /* User space authentication */ | 54 | #define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages uninteresting to kernel */ |
55 | #define AUDIT_USER_ACCT 1101 /* User space acct change */ | 55 | #define AUDIT_LAST_USER_MSG 1199 |
56 | #define AUDIT_USER_MGMT 1102 /* User space acct management */ | ||
57 | #define AUDIT_CRED_ACQ 1103 /* User space credential acquired */ | ||
58 | #define AUDIT_CRED_DISP 1104 /* User space credential disposed */ | ||
59 | #define AUDIT_USER_START 1105 /* User space session start */ | ||
60 | #define AUDIT_USER_END 1106 /* User space session end */ | ||
61 | #define AUDIT_USER_AVC 1107 /* User space avc message */ | ||
62 | 56 | ||
63 | #define AUDIT_DAEMON_START 1200 /* Daemon startup record */ | 57 | #define AUDIT_DAEMON_START 1200 /* Daemon startup record */ |
64 | #define AUDIT_DAEMON_END 1201 /* Daemon normal stop record */ | 58 | #define AUDIT_DAEMON_END 1201 /* Daemon normal stop record */ |
@@ -173,13 +167,6 @@ | |||
173 | #define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE) | 167 | #define AUDIT_ARCH_V850 (EM_V850|__AUDIT_ARCH_LE) |
174 | #define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) | 168 | #define AUDIT_ARCH_X86_64 (EM_X86_64|__AUDIT_ARCH_64BIT|__AUDIT_ARCH_LE) |
175 | 169 | ||
176 | #ifndef __KERNEL__ | ||
177 | struct audit_message { | ||
178 | struct nlmsghdr nlh; | ||
179 | char data[1200]; | ||
180 | }; | ||
181 | #endif | ||
182 | |||
183 | struct audit_status { | 170 | struct audit_status { |
184 | __u32 mask; /* Bit mask for valid entries */ | 171 | __u32 mask; /* Bit mask for valid entries */ |
185 | __u32 enabled; /* 1 = enabled, 0 = disabled */ | 172 | __u32 enabled; /* 1 = enabled, 0 = disabled */ |
diff --git a/kernel/audit.c b/kernel/audit.c index a0e33b6897d7..e6d88635032c 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -325,15 +325,7 @@ static int audit_netlink_ok(kernel_cap_t eff_cap, u16 msg_type) | |||
325 | if (!cap_raised(eff_cap, CAP_AUDIT_CONTROL)) | 325 | if (!cap_raised(eff_cap, CAP_AUDIT_CONTROL)) |
326 | err = -EPERM; | 326 | err = -EPERM; |
327 | break; | 327 | break; |
328 | case AUDIT_USER: | 328 | case AUDIT_FIRST_USER_MSG...AUDIT_LAST_USER_MSG: |
329 | case AUDIT_USER_AUTH: | ||
330 | case AUDIT_USER_ACCT: | ||
331 | case AUDIT_USER_MGMT: | ||
332 | case AUDIT_CRED_ACQ: | ||
333 | case AUDIT_CRED_DISP: | ||
334 | case AUDIT_USER_START: | ||
335 | case AUDIT_USER_END: | ||
336 | case AUDIT_USER_AVC: | ||
337 | if (!cap_raised(eff_cap, CAP_AUDIT_WRITE)) | 329 | if (!cap_raised(eff_cap, CAP_AUDIT_WRITE)) |
338 | err = -EPERM; | 330 | err = -EPERM; |
339 | break; | 331 | break; |
@@ -402,15 +394,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
402 | audit_set_backlog_limit(status_get->backlog_limit, | 394 | audit_set_backlog_limit(status_get->backlog_limit, |
403 | loginuid); | 395 | loginuid); |
404 | break; | 396 | break; |
405 | case AUDIT_USER: | 397 | case AUDIT_FIRST_USER_MSG...AUDIT_LAST_USER_MSG: |
406 | case AUDIT_USER_AUTH: | ||
407 | case AUDIT_USER_ACCT: | ||
408 | case AUDIT_USER_MGMT: | ||
409 | case AUDIT_CRED_ACQ: | ||
410 | case AUDIT_CRED_DISP: | ||
411 | case AUDIT_USER_START: | ||
412 | case AUDIT_USER_END: | ||
413 | case AUDIT_USER_AVC: | ||
414 | ab = audit_log_start(NULL, msg_type); | 398 | ab = audit_log_start(NULL, msg_type); |
415 | if (!ab) | 399 | if (!ab) |
416 | break; /* audit_panic has been called */ | 400 | break; /* audit_panic has been called */ |
diff --git a/security/selinux/nlmsgtab.c b/security/selinux/nlmsgtab.c index 67e77acc4795..f0fb6d76f7c5 100644 --- a/security/selinux/nlmsgtab.c +++ b/security/selinux/nlmsgtab.c | |||
@@ -98,14 +98,6 @@ static struct nlmsg_perm nlmsg_audit_perms[] = | |||
98 | { AUDIT_DEL, NETLINK_AUDIT_SOCKET__NLMSG_WRITE }, | 98 | { AUDIT_DEL, NETLINK_AUDIT_SOCKET__NLMSG_WRITE }, |
99 | { AUDIT_USER, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | 99 | { AUDIT_USER, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, |
100 | { AUDIT_SIGNAL_INFO, NETLINK_AUDIT_SOCKET__NLMSG_READ }, | 100 | { AUDIT_SIGNAL_INFO, NETLINK_AUDIT_SOCKET__NLMSG_READ }, |
101 | { AUDIT_USER_AUTH, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
102 | { AUDIT_USER_ACCT, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
103 | { AUDIT_USER_MGMT, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
104 | { AUDIT_CRED_ACQ, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
105 | { AUDIT_CRED_DISP, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
106 | { AUDIT_USER_START, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
107 | { AUDIT_USER_END, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
108 | { AUDIT_USER_AVC, NETLINK_AUDIT_SOCKET__NLMSG_RELAY }, | ||
109 | }; | 101 | }; |
110 | 102 | ||
111 | 103 | ||
@@ -150,8 +142,13 @@ int selinux_nlmsg_lookup(u16 sclass, u16 nlmsg_type, u32 *perm) | |||
150 | break; | 142 | break; |
151 | 143 | ||
152 | case SECCLASS_NETLINK_AUDIT_SOCKET: | 144 | case SECCLASS_NETLINK_AUDIT_SOCKET: |
153 | err = nlmsg_perm(nlmsg_type, perm, nlmsg_audit_perms, | 145 | if (nlmsg_type >= AUDIT_FIRST_USER_MSG && |
154 | sizeof(nlmsg_audit_perms)); | 146 | nlmsg_type <= AUDIT_LAST_USER_MSG) { |
147 | *perm = NETLINK_AUDIT_SOCKET__NLMSG_RELAY; | ||
148 | } else { | ||
149 | err = nlmsg_perm(nlmsg_type, perm, nlmsg_audit_perms, | ||
150 | sizeof(nlmsg_audit_perms)); | ||
151 | } | ||
155 | break; | 152 | break; |
156 | 153 | ||
157 | /* No messaging from userspace, or class unknown/unhandled */ | 154 | /* No messaging from userspace, or class unknown/unhandled */ |