summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--security/selinux/include/security.h2
-rw-r--r--security/selinux/selinuxfs.c13
-rw-r--r--security/selinux/ss/services.c23
3 files changed, 27 insertions, 11 deletions
diff --git a/security/selinux/include/security.h b/security/selinux/include/security.h
index f979c35e037e..c4224bbf9f4e 100644
--- a/security/selinux/include/security.h
+++ b/security/selinux/include/security.h
@@ -76,6 +76,8 @@ enum {
76}; 76};
77#define POLICYDB_CAPABILITY_MAX (__POLICYDB_CAPABILITY_MAX - 1) 77#define POLICYDB_CAPABILITY_MAX (__POLICYDB_CAPABILITY_MAX - 1)
78 78
79extern char *selinux_policycap_names[__POLICYDB_CAPABILITY_MAX];
80
79extern int selinux_policycap_netpeer; 81extern int selinux_policycap_netpeer;
80extern int selinux_policycap_openperm; 82extern int selinux_policycap_openperm;
81extern int selinux_policycap_extsockclass; 83extern int selinux_policycap_extsockclass;
diff --git a/security/selinux/selinuxfs.c b/security/selinux/selinuxfs.c
index 50062e70140d..82adb78a58f7 100644
--- a/security/selinux/selinuxfs.c
+++ b/security/selinux/selinuxfs.c
@@ -41,15 +41,6 @@
41#include "objsec.h" 41#include "objsec.h"
42#include "conditional.h" 42#include "conditional.h"
43 43
44/* Policy capability filenames */
45static char *policycap_names[] = {
46 "network_peer_controls",
47 "open_perms",
48 "extended_socket_class",
49 "always_check_network",
50 "cgroup_seclabel"
51};
52
53unsigned int selinux_checkreqprot = CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE; 44unsigned int selinux_checkreqprot = CONFIG_SECURITY_SELINUX_CHECKREQPROT_VALUE;
54 45
55static int __init checkreqprot_setup(char *str) 46static int __init checkreqprot_setup(char *str)
@@ -1750,9 +1741,9 @@ static int sel_make_policycap(void)
1750 sel_remove_entries(policycap_dir); 1741 sel_remove_entries(policycap_dir);
1751 1742
1752 for (iter = 0; iter <= POLICYDB_CAPABILITY_MAX; iter++) { 1743 for (iter = 0; iter <= POLICYDB_CAPABILITY_MAX; iter++) {
1753 if (iter < ARRAY_SIZE(policycap_names)) 1744 if (iter < ARRAY_SIZE(selinux_policycap_names))
1754 dentry = d_alloc_name(policycap_dir, 1745 dentry = d_alloc_name(policycap_dir,
1755 policycap_names[iter]); 1746 selinux_policycap_names[iter]);
1756 else 1747 else
1757 dentry = d_alloc_name(policycap_dir, "unknown"); 1748 dentry = d_alloc_name(policycap_dir, "unknown");
1758 1749
diff --git a/security/selinux/ss/services.c b/security/selinux/ss/services.c
index 60d9b0252321..2dccba4851f8 100644
--- a/security/selinux/ss/services.c
+++ b/security/selinux/ss/services.c
@@ -70,6 +70,15 @@
70#include "ebitmap.h" 70#include "ebitmap.h"
71#include "audit.h" 71#include "audit.h"
72 72
73/* Policy capability names */
74char *selinux_policycap_names[__POLICYDB_CAPABILITY_MAX] = {
75 "network_peer_controls",
76 "open_perms",
77 "extended_socket_class",
78 "always_check_network",
79 "cgroup_seclabel"
80};
81
73int selinux_policycap_netpeer; 82int selinux_policycap_netpeer;
74int selinux_policycap_openperm; 83int selinux_policycap_openperm;
75int selinux_policycap_extsockclass; 84int selinux_policycap_extsockclass;
@@ -1986,6 +1995,9 @@ bad:
1986 1995
1987static void security_load_policycaps(void) 1996static void security_load_policycaps(void)
1988{ 1997{
1998 unsigned int i;
1999 struct ebitmap_node *node;
2000
1989 selinux_policycap_netpeer = ebitmap_get_bit(&policydb.policycaps, 2001 selinux_policycap_netpeer = ebitmap_get_bit(&policydb.policycaps,
1990 POLICYDB_CAPABILITY_NETPEER); 2002 POLICYDB_CAPABILITY_NETPEER);
1991 selinux_policycap_openperm = ebitmap_get_bit(&policydb.policycaps, 2003 selinux_policycap_openperm = ebitmap_get_bit(&policydb.policycaps,
@@ -1997,6 +2009,17 @@ static void security_load_policycaps(void)
1997 selinux_policycap_cgroupseclabel = 2009 selinux_policycap_cgroupseclabel =
1998 ebitmap_get_bit(&policydb.policycaps, 2010 ebitmap_get_bit(&policydb.policycaps,
1999 POLICYDB_CAPABILITY_CGROUPSECLABEL); 2011 POLICYDB_CAPABILITY_CGROUPSECLABEL);
2012
2013 for (i = 0; i < ARRAY_SIZE(selinux_policycap_names); i++)
2014 pr_info("SELinux: policy capability %s=%d\n",
2015 selinux_policycap_names[i],
2016 ebitmap_get_bit(&policydb.policycaps, i));
2017
2018 ebitmap_for_each_positive_bit(&policydb.policycaps, node, i) {
2019 if (i >= ARRAY_SIZE(selinux_policycap_names))
2020 pr_info("SELinux: unknown policy capability %u\n",
2021 i);
2022 }
2000} 2023}
2001 2024
2002static int security_preserve_bools(struct policydb *p); 2025static int security_preserve_bools(struct policydb *p);