# service flash_recovery in init.rc
type install_recovery, domain;
type install_recovery_exec, system_file_type, exec_type, file_type;

allow install_recovery self:global_capability_class_set { dac_override dac_read_search };

# /system/bin/install-recovery.sh is a shell script.
# Needs to execute /system/bin/sh
allow install_recovery shell_exec:file rx_file_perms;

# Execute /system/bin/applypatch
allow install_recovery system_file:file rx_file_perms;
not_full_treble(`allow install_recovery vendor_file:file rx_file_perms;')

allow install_recovery toolbox_exec:file rx_file_perms;

# Update the recovery block device based off a diff of the boot block device
allow install_recovery block_device:dir search;
allow install_recovery boot_block_device:blk_file r_file_perms;
allow install_recovery recovery_block_device:blk_file rw_file_perms;

# Create and delete /cache/saved.file
allow install_recovery cache_file:dir rw_dir_perms;
allow install_recovery cache_file:file create_file_perms;

# Write to /proc/sys/vm/drop_caches
allow install_recovery proc_drop_caches:file w_file_perms;
