aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBowgo Tsai2017-11-26 21:41:33 -0600
committerBowgo Tsai2018-03-16 02:44:23 -0500
commit45457e3a2b26b8c5d4a13b694e9d781ec4438b04 (patch)
tree40a3a9d70031efc3697bd7909be332821733f244 /Android.mk
parent4eb10d809ab4294da21e41199df3eb943fc1bd75 (diff)
downloadsystem-sepolicy-45457e3a2b26b8c5d4a13b694e9d781ec4438b04.tar.gz
system-sepolicy-45457e3a2b26b8c5d4a13b694e9d781ec4438b04.tar.xz
system-sepolicy-45457e3a2b26b8c5d4a13b694e9d781ec4438b04.zip
Add /odm/etc/selinux/odm_sepolicy.cil
This change adds the support of odm sepolicy customization, which can be configured through the newly added build varaible: - BOARD_ODM_SEPOLICY_DIRS += device/${ODM_NAME}/${BOM_NAME}/sepolicy Also moving precompiled sepolicy to /odm when BOARD_ODM_SEPOLICY_DIRS is set. On a DUT, precompiled sepolicy on /odm will override the one in /vendor. This is intentional because /odm is the hardware customization for /vendor and both should be updated together if desired. Bug: 64240127 Test: boot a device with /odm partition Change-Id: Ia8f81a78c88cbfefb3ff19e2ccd2648da6284d09
Diffstat (limited to 'Android.mk')
-rw-r--r--Android.mk89
1 files changed, 84 insertions, 5 deletions
diff --git a/Android.mk b/Android.mk
index ccddace1..f02c6211 100644
--- a/Android.mk
+++ b/Android.mk
@@ -100,14 +100,20 @@ $(warning Be careful when using the SELINUX_IGNORE_NEVERALLOWS flag. \
100NEVERALLOW_ARG := -N 100NEVERALLOW_ARG := -N
101endif 101endif
102 102
103# BOARD_SEPOLICY_DIRS was used for vendor sepolicy customization before. 103# BOARD_SEPOLICY_DIRS was used for vendor/odm sepolicy customization before.
104# It has been replaced by BOARD_VENDOR_SEPOLICY_DIRS. BOARD_SEPOLICY_DIRS is 104# It has been replaced by BOARD_VENDOR_SEPOLICY_DIRS (mandatory) and
105# still allowed for backward compatibility, which will be merged into 105# BOARD_ODM_SEPOLICY_DIRS (optional). BOARD_SEPOLICY_DIRS is still allowed for
106# BOARD_VENDOR_SEPOLICY_DIRS. 106# backward compatibility, which will be merged into BOARD_VENDOR_SEPOLICY_DIRS.
107ifdef BOARD_SEPOLICY_DIRS 107ifdef BOARD_SEPOLICY_DIRS
108BOARD_VENDOR_SEPOLICY_DIRS += $(BOARD_SEPOLICY_DIRS) 108BOARD_VENDOR_SEPOLICY_DIRS += $(BOARD_SEPOLICY_DIRS)
109endif 109endif
110 110
111ifdef BOARD_ODM_SEPOLICY_DIRS
112ifneq ($(PRODUCT_SEPOLICY_SPLIT),true)
113$(error PRODUCT_SEPOLICY_SPLIT needs to be true when using BOARD_ODM_SEPOLICY_DIRS)
114endif
115endif
116
111platform_mapping_file := $(BOARD_SEPOLICY_VERS).cil 117platform_mapping_file := $(BOARD_SEPOLICY_VERS).cil
112 118
113########################################################### 119###########################################################
@@ -242,6 +248,10 @@ LOCAL_REQUIRED_MODULES += \
242endif 248endif
243endif 249endif
244 250
251ifdef BOARD_ODM_SEPOLICY_DIRS
252LOCAL_REQUIRED_MODULES += odm_sepolicy.cil
253endif
254
245include $(BUILD_PHONY_PACKAGE) 255include $(BUILD_PHONY_PACKAGE)
246 256
247################################# 257#################################
@@ -554,11 +564,65 @@ vendor_policy.conf :=
554################################# 564#################################
555include $(CLEAR_VARS) 565include $(CLEAR_VARS)
556 566
567# odm_policy.cil - the odm sepolicy. This needs attributization and to be combined
568# with the platform-provided policy. It makes use of the reqd_policy_mask files from private
569# policy and the platform public policy files in order to use checkpolicy.
570LOCAL_MODULE := odm_sepolicy.cil
571LOCAL_MODULE_CLASS := ETC
572LOCAL_MODULE_TAGS := optional
573LOCAL_PROPRIETARY_MODULE := true
574LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
575
576include $(BUILD_SYSTEM)/base_rules.mk
577
578odm_policy.conf := $(intermediates)/odm_policy.conf
579$(odm_policy.conf): PRIVATE_MLS_SENS := $(MLS_SENS)
580$(odm_policy.conf): PRIVATE_MLS_CATS := $(MLS_CATS)
581$(odm_policy.conf): PRIVATE_TARGET_BUILD_VARIANT := $(TARGET_BUILD_VARIANT)
582$(odm_policy.conf): PRIVATE_TGT_ARCH := $(my_target_arch)
583$(odm_policy.conf): PRIVATE_TGT_WITH_ASAN := $(with_asan)
584$(odm_policy.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEFS)
585$(odm_policy.conf): PRIVATE_SEPOLICY_SPLIT := $(PRODUCT_SEPOLICY_SPLIT)
586$(odm_policy.conf): PRIVATE_COMPATIBLE_PROPERTY := $(PRODUCT_COMPATIBLE_PROPERTY)
587$(odm_policy.conf): $(call build_policy, $(sepolicy_build_files), \
588 $(PLAT_PUBLIC_POLICY) $(REQD_MASK_POLICY) $(PLAT_VENDOR_POLICY) \
589 $(BOARD_VENDOR_SEPOLICY_DIRS) $(BOARD_ODM_SEPOLICY_DIRS))
590 $(transform-policy-to-conf)
591 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
592
593$(LOCAL_BUILT_MODULE): PRIVATE_POL_CONF := $(odm_policy.conf)
594$(LOCAL_BUILT_MODULE): PRIVATE_REQD_MASK := $(reqd_policy_mask.cil)
595$(LOCAL_BUILT_MODULE): PRIVATE_BASE_CIL := $(plat_pub_policy.cil)
596$(LOCAL_BUILT_MODULE): PRIVATE_VERS := $(BOARD_SEPOLICY_VERS)
597$(LOCAL_BUILT_MODULE): PRIVATE_DEP_CIL_FILES := $(built_plat_cil) $(built_plat_pub_vers_cil) \
598 $(built_mapping_cil) $(built_vendor_cil)
599$(LOCAL_BUILT_MODULE) : PRIVATE_FILTER_CIL_FILES := $(built_plat_pub_vers_cil) $(built_vendor_cil)
600$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/build_sepolicy \
601 $(odm_policy.conf) $(reqd_policy_mask.cil) $(plat_pub_policy.cil) \
602 $(built_plat_cil) $(built_plat_pub_vers_cil) $(built_mapping_cil) $(built_vendor_cil)
603 @mkdir -p $(dir $@)
604 $(hide) $(HOST_OUT_EXECUTABLES)/build_sepolicy -a $(HOST_OUT_EXECUTABLES) build_cil \
605 -i $(PRIVATE_POL_CONF) -m $(PRIVATE_REQD_MASK) -c $(CHECKPOLICY_ASAN_OPTIONS) \
606 -b $(PRIVATE_BASE_CIL) -d $(PRIVATE_DEP_CIL_FILES) -f $(PRIVATE_FILTER_CIL_FILES) \
607 -t $(PRIVATE_VERS) -p $(POLICYVERS) -o $@
608
609built_odm_cil := $(LOCAL_BUILT_MODULE)
610odm_policy.conf :=
611odm_policy_raw :=
612
613#################################
614include $(CLEAR_VARS)
615
557LOCAL_MODULE := precompiled_sepolicy 616LOCAL_MODULE := precompiled_sepolicy
558LOCAL_MODULE_CLASS := ETC 617LOCAL_MODULE_CLASS := ETC
559LOCAL_MODULE_TAGS := optional 618LOCAL_MODULE_TAGS := optional
560LOCAL_PROPRIETARY_MODULE := true 619LOCAL_PROPRIETARY_MODULE := true
620
621ifeq ($(BOARD_USES_ODMIMAGE),true)
622LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
623else
561LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux 624LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
625endif
562 626
563include $(BUILD_SYSTEM)/base_rules.mk 627include $(BUILD_SYSTEM)/base_rules.mk
564 628
@@ -568,6 +632,10 @@ all_cil_files := \
568 $(built_plat_pub_vers_cil) \ 632 $(built_plat_pub_vers_cil) \
569 $(built_vendor_cil) 633 $(built_vendor_cil)
570 634
635ifdef BOARD_ODM_SEPOLICY_DIRS
636all_cil_files += $(built_odm_cil)
637endif
638
571$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files) 639$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
572$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG) 640$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
573$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(all_cil_files) $(built_sepolicy_neverallows) 641$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(all_cil_files) $(built_sepolicy_neverallows)
@@ -586,7 +654,12 @@ LOCAL_MODULE := precompiled_sepolicy.plat_and_mapping.sha256
586LOCAL_MODULE_CLASS := ETC 654LOCAL_MODULE_CLASS := ETC
587LOCAL_MODULE_TAGS := optional 655LOCAL_MODULE_TAGS := optional
588LOCAL_PROPRIETARY_MODULE := true 656LOCAL_PROPRIETARY_MODULE := true
657
658ifeq ($(BOARD_USES_ODMIMAGE),true)
659LOCAL_MODULE_PATH := $(TARGET_OUT_ODM)/etc/selinux
660else
589LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux 661LOCAL_MODULE_PATH := $(TARGET_OUT_VENDOR)/etc/selinux
662endif
590 663
591include $(BUILD_SYSTEM)/base_rules.mk 664include $(BUILD_SYSTEM)/base_rules.mk
592 665
@@ -611,6 +684,10 @@ all_cil_files := \
611 $(built_plat_pub_vers_cil) \ 684 $(built_plat_pub_vers_cil) \
612 $(built_vendor_cil) 685 $(built_vendor_cil)
613 686
687ifdef BOARD_ODM_SEPOLICY_DIRS
688all_cil_files += $(built_odm_cil)
689endif
690
614$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files) 691$(LOCAL_BUILT_MODULE): PRIVATE_CIL_FILES := $(all_cil_files)
615$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG) 692$(LOCAL_BUILT_MODULE): PRIVATE_NEVERALLOW_ARG := $(NEVERALLOW_ARG)
616$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $(all_cil_files) \ 693$(LOCAL_BUILT_MODULE): $(HOST_OUT_EXECUTABLES)/secilc $(HOST_OUT_EXECUTABLES)/sepolicy-analyze $(all_cil_files) \
@@ -654,7 +731,8 @@ $(sepolicy.recovery.conf): PRIVATE_ADDITIONAL_M4DEFS := $(LOCAL_ADDITIONAL_M4DEF
654$(sepolicy.recovery.conf): PRIVATE_TGT_RECOVERY := -D target_recovery=true 731$(sepolicy.recovery.conf): PRIVATE_TGT_RECOVERY := -D target_recovery=true
655$(sepolicy.recovery.conf): $(call build_policy, $(sepolicy_build_files), \ 732$(sepolicy.recovery.conf): $(call build_policy, $(sepolicy_build_files), \
656 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \ 733 $(PLAT_PUBLIC_POLICY) $(PLAT_PRIVATE_POLICY) \
657 $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS)) 734 $(PLAT_VENDOR_POLICY) $(BOARD_VENDOR_SEPOLICY_DIRS) \
735 $(BOARD_ODM_SEPOLICY_DIRS))
658 $(transform-policy-to-conf) 736 $(transform-policy-to-conf)
659 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit 737 $(hide) sed '/dontaudit/d' $@ > $@.dontaudit
660ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true) 738ifeq ($(SELINUX_IGNORE_NEVERALLOWS),true)
@@ -1365,6 +1443,7 @@ built_plat_pc :=
1365built_vendor_cil := 1443built_vendor_cil :=
1366built_vendor_pc := 1444built_vendor_pc :=
1367built_vendor_sc := 1445built_vendor_sc :=
1446built_odm_cil :=
1368built_plat_sc := 1447built_plat_sc :=
1369built_precompiled_sepolicy := 1448built_precompiled_sepolicy :=
1370built_sepolicy := 1449built_sepolicy :=