diff options
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/audit.h | 15 | ||||
| -rw-r--r-- | include/uapi/linux/audit.h | 26 |
2 files changed, 33 insertions, 8 deletions
diff --git a/include/linux/audit.h b/include/linux/audit.h index 729a4d165bcc..a40641954c29 100644 --- a/include/linux/audit.h +++ b/include/linux/audit.h | |||
| @@ -73,6 +73,8 @@ struct audit_field { | |||
| 73 | void *lsm_rule; | 73 | void *lsm_rule; |
| 74 | }; | 74 | }; |
| 75 | 75 | ||
| 76 | extern int is_audit_feature_set(int which); | ||
| 77 | |||
| 76 | extern int __init audit_register_class(int class, unsigned *list); | 78 | extern int __init audit_register_class(int class, unsigned *list); |
| 77 | extern int audit_classify_syscall(int abi, unsigned syscall); | 79 | extern int audit_classify_syscall(int abi, unsigned syscall); |
| 78 | extern int audit_classify_arch(int arch); | 80 | extern int audit_classify_arch(int arch); |
| @@ -207,7 +209,7 @@ static inline int audit_get_sessionid(struct task_struct *tsk) | |||
| 207 | 209 | ||
| 208 | extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp); | 210 | extern void __audit_ipc_obj(struct kern_ipc_perm *ipcp); |
| 209 | extern void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode); | 211 | extern void __audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid, umode_t mode); |
| 210 | extern int __audit_bprm(struct linux_binprm *bprm); | 212 | extern void __audit_bprm(struct linux_binprm *bprm); |
| 211 | extern int __audit_socketcall(int nargs, unsigned long *args); | 213 | extern int __audit_socketcall(int nargs, unsigned long *args); |
| 212 | extern int __audit_sockaddr(int len, void *addr); | 214 | extern int __audit_sockaddr(int len, void *addr); |
| 213 | extern void __audit_fd_pair(int fd1, int fd2); | 215 | extern void __audit_fd_pair(int fd1, int fd2); |
| @@ -236,11 +238,10 @@ static inline void audit_ipc_set_perm(unsigned long qbytes, uid_t uid, gid_t gid | |||
| 236 | if (unlikely(!audit_dummy_context())) | 238 | if (unlikely(!audit_dummy_context())) |
| 237 | __audit_ipc_set_perm(qbytes, uid, gid, mode); | 239 | __audit_ipc_set_perm(qbytes, uid, gid, mode); |
| 238 | } | 240 | } |
| 239 | static inline int audit_bprm(struct linux_binprm *bprm) | 241 | static inline void audit_bprm(struct linux_binprm *bprm) |
| 240 | { | 242 | { |
| 241 | if (unlikely(!audit_dummy_context())) | 243 | if (unlikely(!audit_dummy_context())) |
| 242 | return __audit_bprm(bprm); | 244 | __audit_bprm(bprm); |
| 243 | return 0; | ||
| 244 | } | 245 | } |
| 245 | static inline int audit_socketcall(int nargs, unsigned long *args) | 246 | static inline int audit_socketcall(int nargs, unsigned long *args) |
| 246 | { | 247 | { |
| @@ -367,10 +368,8 @@ static inline void audit_ipc_obj(struct kern_ipc_perm *ipcp) | |||
| 367 | static inline void audit_ipc_set_perm(unsigned long qbytes, uid_t uid, | 368 | static inline void audit_ipc_set_perm(unsigned long qbytes, uid_t uid, |
| 368 | gid_t gid, umode_t mode) | 369 | gid_t gid, umode_t mode) |
| 369 | { } | 370 | { } |
| 370 | static inline int audit_bprm(struct linux_binprm *bprm) | 371 | static inline void audit_bprm(struct linux_binprm *bprm) |
| 371 | { | 372 | { } |
| 372 | return 0; | ||
| 373 | } | ||
| 374 | static inline int audit_socketcall(int nargs, unsigned long *args) | 373 | static inline int audit_socketcall(int nargs, unsigned long *args) |
| 375 | { | 374 | { |
| 376 | return 0; | 375 | return 0; |
diff --git a/include/uapi/linux/audit.h b/include/uapi/linux/audit.h index db0b825b4810..44b05a09f193 100644 --- a/include/uapi/linux/audit.h +++ b/include/uapi/linux/audit.h | |||
| @@ -68,6 +68,9 @@ | |||
| 68 | #define AUDIT_MAKE_EQUIV 1015 /* Append to watched tree */ | 68 | #define AUDIT_MAKE_EQUIV 1015 /* Append to watched tree */ |
| 69 | #define AUDIT_TTY_GET 1016 /* Get TTY auditing status */ | 69 | #define AUDIT_TTY_GET 1016 /* Get TTY auditing status */ |
| 70 | #define AUDIT_TTY_SET 1017 /* Set TTY auditing status */ | 70 | #define AUDIT_TTY_SET 1017 /* Set TTY auditing status */ |
| 71 | #define AUDIT_SET_FEATURE 1018 /* Turn an audit feature on or off */ | ||
| 72 | #define AUDIT_GET_FEATURE 1019 /* Get which features are enabled */ | ||
| 73 | #define AUDIT_FEATURE_CHANGE 1020 /* audit log listing feature changes */ | ||
| 71 | 74 | ||
| 72 | #define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages mostly uninteresting to kernel */ | 75 | #define AUDIT_FIRST_USER_MSG 1100 /* Userspace messages mostly uninteresting to kernel */ |
| 73 | #define AUDIT_USER_AVC 1107 /* We filter this differently */ | 76 | #define AUDIT_USER_AVC 1107 /* We filter this differently */ |
| @@ -357,6 +360,12 @@ enum { | |||
| 357 | #define AUDIT_PERM_READ 4 | 360 | #define AUDIT_PERM_READ 4 |
| 358 | #define AUDIT_PERM_ATTR 8 | 361 | #define AUDIT_PERM_ATTR 8 |
| 359 | 362 | ||
| 363 | /* MAX_AUDIT_MESSAGE_LENGTH is set in audit:lib/libaudit.h as: | ||
| 364 | * 8970 // PATH_MAX*2+CONTEXT_SIZE*2+11+256+1 | ||
| 365 | * max header+body+tailer: 44 + 29 + 32 + 262 + 7 + pad | ||
| 366 | */ | ||
| 367 | #define AUDIT_MESSAGE_TEXT_MAX 8560 | ||
| 368 | |||
| 360 | struct audit_status { | 369 | struct audit_status { |
| 361 | __u32 mask; /* Bit mask for valid entries */ | 370 | __u32 mask; /* Bit mask for valid entries */ |
| 362 | __u32 enabled; /* 1 = enabled, 0 = disabled */ | 371 | __u32 enabled; /* 1 = enabled, 0 = disabled */ |
| @@ -368,11 +377,28 @@ struct audit_status { | |||
| 368 | __u32 backlog; /* messages waiting in queue */ | 377 | __u32 backlog; /* messages waiting in queue */ |
| 369 | }; | 378 | }; |
| 370 | 379 | ||
| 380 | struct audit_features { | ||
| 381 | #define AUDIT_FEATURE_VERSION 1 | ||
| 382 | __u32 vers; | ||
| 383 | __u32 mask; /* which bits we are dealing with */ | ||
| 384 | __u32 features; /* which feature to enable/disable */ | ||
| 385 | __u32 lock; /* which features to lock */ | ||
| 386 | }; | ||
| 387 | |||
| 388 | #define AUDIT_FEATURE_ONLY_UNSET_LOGINUID 0 | ||
| 389 | #define AUDIT_FEATURE_LOGINUID_IMMUTABLE 1 | ||
| 390 | #define AUDIT_LAST_FEATURE AUDIT_FEATURE_LOGINUID_IMMUTABLE | ||
| 391 | |||
| 392 | #define audit_feature_valid(x) ((x) >= 0 && (x) <= AUDIT_LAST_FEATURE) | ||
| 393 | #define AUDIT_FEATURE_TO_MASK(x) (1 << ((x) & 31)) /* mask for __u32 */ | ||
| 394 | |||
| 371 | struct audit_tty_status { | 395 | struct audit_tty_status { |
| 372 | __u32 enabled; /* 1 = enabled, 0 = disabled */ | 396 | __u32 enabled; /* 1 = enabled, 0 = disabled */ |
| 373 | __u32 log_passwd; /* 1 = enabled, 0 = disabled */ | 397 | __u32 log_passwd; /* 1 = enabled, 0 = disabled */ |
| 374 | }; | 398 | }; |
| 375 | 399 | ||
| 400 | #define AUDIT_UID_UNSET (unsigned int)-1 | ||
| 401 | |||
| 376 | /* audit_rule_data supports filter rules with both integer and string | 402 | /* audit_rule_data supports filter rules with both integer and string |
| 377 | * fields. It corresponds with AUDIT_ADD_RULE, AUDIT_DEL_RULE and | 403 | * fields. It corresponds with AUDIT_ADD_RULE, AUDIT_DEL_RULE and |
| 378 | * AUDIT_LIST_RULES requests. | 404 | * AUDIT_LIST_RULES requests. |
