09d13e734d
This switches Boot Control HAL policy to the design which enables us to conditionally remove unnecessary rules from domains which are clients of Boot Control HAL. Domains which are clients of Boot Control HAL, such as update_server, are granted rules targeting hal_bootctl only when the Boot Control HAL runs in passthrough mode (i.e., inside the client's process). When the HAL runs in binderized mode (i.e., in another process/domain, with clients talking to the HAL over HwBinder IPC), rules targeting hal_bootctl are not granted to client domains. Domains which offer a binderized implementation of Boot Control HAL, such as hal_bootctl_default domain, are always granted rules targeting hal_bootctl. P. S. This commit removes direct access to Boot Control HAL from system_server because system_server is not a client of this HAL. This commit also removes bootctrl_block_device type which is no longer used. Finally, boot_control_hal attribute is removed because it is now covered by the hal_bootctl attribute. Test: Device boots up, no new denials Test: Reboot into recovery, sideload OTA update succeeds Test: Apply OTA update via update_engine: 1. make dist 2. Ensure device has network connectivity 3. ota_call.py -s <serial here> out/dist/sailfish-ota-*.zip Bug: 34170079 Change-Id: I9c410c092069e431a3852b66c04c4d2a9f1a25cf
42 lines
1.6 KiB
Text
42 lines
1.6 KiB
Text
# Domain for update_engine daemon.
|
|
type update_engine, domain, domain_deprecated, update_engine_common;
|
|
type update_engine_exec, exec_type, file_type;
|
|
type update_engine_data_file, file_type, data_file_type;
|
|
|
|
net_domain(update_engine);
|
|
|
|
# Read/[write] to /proc/net/xt_qtaguid/ctrl and /dev/xt_qtaguid to tag network
|
|
# sockets.
|
|
allow update_engine qtaguid_proc:file rw_file_perms;
|
|
allow update_engine qtaguid_device:chr_file r_file_perms;
|
|
|
|
# Following permissions are needed for update_engine.
|
|
allow update_engine self:process { setsched };
|
|
allow update_engine self:capability { fowner sys_admin };
|
|
allow update_engine kmsg_device:chr_file w_file_perms;
|
|
allow update_engine update_engine_exec:file rx_file_perms;
|
|
wakelock_use(update_engine);
|
|
|
|
# Ignore these denials.
|
|
dontaudit update_engine kernel:process setsched;
|
|
|
|
# Allow using persistent storage in /data/misc/update_engine.
|
|
allow update_engine update_engine_data_file:dir { create_dir_perms };
|
|
allow update_engine update_engine_data_file:file { create_file_perms };
|
|
|
|
# Don't allow kernel module loading, just silence the logs.
|
|
dontaudit update_engine kernel:system module_request;
|
|
|
|
# Register the service to perform Binder IPC.
|
|
binder_use(update_engine)
|
|
add_service(update_engine, update_engine_service)
|
|
|
|
# Allow update_engine to call the callback function provided by priv_app.
|
|
binder_call(update_engine, priv_app)
|
|
|
|
# Read OTA zip file at /data/ota_package/.
|
|
allow update_engine ota_package_file:file r_file_perms;
|
|
allow update_engine ota_package_file:dir r_dir_perms;
|
|
|
|
# Use Boot Control HAL
|
|
hal_client_domain(update_engine, hal_bootctl)
|