diff options
author | Stephen Smalley <sds@tycho.nsa.gov> | 2016-11-18 10:23:09 -0500 |
---|---|---|
committer | Paul Moore <paul@paul-moore.com> | 2016-11-21 15:37:24 -0500 |
commit | 3322d0d64f4e942862a152f6f11137a1f5eac2e9 (patch) | |
tree | c86bdc1084436be2cb25afe9f382764c091db6ee /security | |
parent | ea49d10eee5a220b717dbf2ee429c9e3d59c978c (diff) |
selinux: keep SELinux in sync with new capability definitions
When a new capability is defined, SELinux needs to be updated.
Trigger a build error if a new capability is defined without
corresponding update to security/selinux/include/classmap.h's
COMMON_CAP2_PERMS. This is similar to BUILD_BUG_ON() guards
in the SELinux nlmsgtab code to ensure that SELinux tracks
new netlink message types as needed.
Note that there is already a similar build guard in
security/selinux/hooks.c to detect when more than 64
capabilities are defined, since that will require adding
a third capability class to SELinux.
A nicer way to do this would be to extend scripts/selinux/genheaders
or a similar tool to auto-generate the necessary definitions and code
for SELinux capability checking from include/uapi/linux/capability.h.
AppArmor does something similar in its Makefile, although it only
needs to generate a single table of names. That is left as future
work.
Signed-off-by: Stephen Smalley <sds@tycho.nsa.gov>
[PM: reformat the description to keep checkpatch.pl happy]
Signed-off-by: Paul Moore <paul@paul-moore.com>
Diffstat (limited to 'security')
-rw-r--r-- | security/selinux/include/classmap.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/security/selinux/include/classmap.h b/security/selinux/include/classmap.h index 1f1f4b2f6018..e2d4ad3a4b4c 100644 --- a/security/selinux/include/classmap.h +++ b/security/selinux/include/classmap.h | |||
@@ -24,6 +24,10 @@ | |||
24 | #define COMMON_CAP2_PERMS "mac_override", "mac_admin", "syslog", \ | 24 | #define COMMON_CAP2_PERMS "mac_override", "mac_admin", "syslog", \ |
25 | "wake_alarm", "block_suspend", "audit_read" | 25 | "wake_alarm", "block_suspend", "audit_read" |
26 | 26 | ||
27 | #if CAP_LAST_CAP > CAP_AUDIT_READ | ||
28 | #error New capability defined, please update COMMON_CAP2_PERMS. | ||
29 | #endif | ||
30 | |||
27 | /* | 31 | /* |
28 | * Note: The name for any socket class should be suffixed by "socket", | 32 | * Note: The name for any socket class should be suffixed by "socket", |
29 | * and doesn't contain more than one substr of "socket". | 33 | * and doesn't contain more than one substr of "socket". |