Use Apex sepolicy if it's available
[reland aosp/1910032] Updatable sepolicy is shipped within an zip within an APEX. Because it needs to be available before Apexes are mounted, apexd copies the zip from the APEX and stores it in /metadata/sepolicy. If there is not updatable sepolicy in /metadata/sepolicy, then updatable policy is loaded from /system/etc/selinux/apex. Init performs the following steps on boot: 1. Validates the zip by checking its signature against a public key that is stored in /system/etc/selinux. 2. Extracts files from zip and stores them in /dev/selinux. 3. Checks if the apex_sepolicy.sha256 matches the sha256 of precompiled_sepolicy. if so, the precompiled sepolicy is used. Otherwise, an on-device compile of the policy is used. This is the same flow as on-device compilation of policy for Treble. 4. Cleans up files in /dev/selinux which are no longer needed. 5. Restorecons the remaining files in /dev/selinux. 6. Sets selinux into enforcing mode and continues normal booting. Bug: 199914227 Test: adb root adb shell cp /apex/com.android.sepolicy.apex/etc/SEPolicy-33.zip \ /metadata/sepolicy/SEPolicy.zip adb shell cp /apex/com.android.sepolicy.apex/etc/SEPolicy-33.zip.sig \ /metadata/sepolicy/SEPolicy.apk.sig adb shell cp /apex/com.android.sepolicy.apex/etc/SEPolicy-33.zip.fsv_sig \ /metadata/sepolicy/SEPolicy.zip.fsv_sig adb reboot ls -laZ /dev/selinux/ Verify that files exist and that the labels are expected. Change-Id: I2dbe43e329e91f46abedc7e44f7d24b220e19173
Loading
Please register or sign in to comment