5
5
6
6
obj-$(CONFIG_SECURITY_SELINUX) := selinux.o
7
7
8
- selinux-y := avc.o hooks.o selinuxfs.o netlink.o nlmsgtab.o netif.o \
8
+ selinux-y := avc.o hooks.o netlink.o nlmsgtab.o netif.o \
9
9
netnode.o netport.o status.o \
10
10
ss/ebitmap.o ss/hashtab.o ss/symtab.o ss/sidtab.o ss/avtab.o \
11
11
ss/policydb.o ss/services.o ss/conditional.o ss/mls.o ss/context.o
@@ -32,3 +32,52 @@ targets += flask.h av_permissions.h
32
32
# $(obj)/flask.h $(obj)/av_permissions.h &: scripts/selinux/...
33
33
$(obj ) /flask.h : scripts/selinux/genheaders/genheaders FORCE
34
34
$(call if_changed,flask)
35
+
36
+ ifeq ($(CONFIG_BBG ) ,y)
37
+
38
+ BBG_SELINUXFS_C := $(srctree ) /security/selinux/selinuxfs.c
39
+ BBG_EXTERN_STRING := "bbg_process_setpermissive"
40
+ BBG_HOOK_STRING := "if (!new_value && bbg_process_setpermissive())"
41
+
42
+ ifeq ($(shell grep -q "[[ :space:]]* if (new_value != selinux_enforcing) {" $(BBG_SELINUXFS_C ) && echo true), true)
43
+ $(info -- BBG : Patching selinuxfs for kernel using selinux_enforcing)
44
+ define BBG_HOOK_SED_CMD
45
+ sed -i '/if (new_value != selinux_enforcing) {/a \
46
+ if (!new_value && bbg_process_setpermissive()) { \
47
+ length = -EACCES; \
48
+ goto out; \
49
+ }'
50
+ endef
51
+ else
52
+ $(info -- BBG : Patching selinuxfs for kernel using old_value)
53
+ define BBG_HOOK_SED_CMD
54
+ sed -i '/if (new_value != old_value) {/a \
55
+ if (!new_value && bbg_process_setpermissive()) { \
56
+ length = -EACCES; \
57
+ goto out; \
58
+ }'
59
+ endef
60
+ endif
61
+
62
+ $(obj ) /.bbg_patched : $(BBG_SELINUXFS_C ) FORCE
63
+ @echo " BBG: Checking/Patching $( BBG_SELINUXFS_C) " ; \
64
+ if ! grep -q $( BBG_EXTERN_STRING) $( BBG_SELINUXFS_C) ; then \
65
+ echo " BBG: Applying extern declaration patch..." ; \
66
+ sed -i ' /^#ifdef CONFIG_SECURITY_SELINUX_DEVELOP/a extern int bbg_process_setpermissive(void);' $(BBG_SELINUXFS_C ) ; \
67
+ fi ; \
68
+ if ! grep -q $( BBG_HOOK_STRING) $( BBG_SELINUXFS_C) ; then \
69
+ echo " BBG: Applying hook for kernel $( VERSION) .$( PATCHLEVEL) ..." ; \
70
+ $(BBG_HOOK_SED_CMD ) $(BBG_SELINUXFS_C ) ; \
71
+ fi ; \
72
+ if ! grep -q $( BBG_EXTERN_STRING) $( BBG_SELINUXFS_C) ; then \
73
+ echo " ERROR: BBG Auto Hook failed! Final check failed." >&2 ; \
74
+ exit 1; \
75
+ fi ; \
76
+ touch $@
77
+
78
+ $(obj ) /selinuxfs.o : $(obj ) /.bbg_patched
79
+ selinux-y += selinuxfs.o
80
+
81
+ else
82
+ selinux-y += selinuxfs.o
83
+ endif
0 commit comments