# update_verifier type update_verifier, domain; type update_verifier_exec, system_file_type, exec_type, file_type; # Allow update_verifier to reach block devices in /dev/block. allow update_verifier block_device:dir search; # Read care map in /data/ota_package/. allow update_verifier ota_package_file:dir r_dir_perms; allow update_verifier ota_package_file:file r_file_perms; # Read /sys/block to find all the DM directories like (/sys/block/dm-X). allow update_verifier sysfs:dir r_dir_perms; # Read /sys/block/dm-X/dm/name (which is a symlink to # /sys/devices/virtual/block/dm-X/dm/name) to identify the mapping between # dm-X and system/vendor partitions. allow update_verifier sysfs_dm:dir r_dir_perms; allow update_verifier sysfs_dm:file r_file_perms; # Read all blocks in DM wrapped system partition. allow update_verifier dm_device:blk_file r_file_perms; # Write to kernel message. allow update_verifier kmsg_device:chr_file { getattr w_file_perms }; # Allow update_verifier to reboot the device. set_prop(update_verifier, powerctl_prop) # Allow to set the OTA related properties e.g. ota.warm_reset. set_prop(update_verifier, ota_prop) # Use Boot Control HAL hal_client_domain(update_verifier, hal_bootctl) # Access Checkpoint commands over binder allow update_verifier vold_service:service_manager find; binder_call(update_verifier, servicemanager) binder_call(update_verifier, vold)