# All types must be defined regardless of build variant to ensure # policy compilation succeeds with userdebug/user combination at boot type su, domain; # File types must be defined for file_contexts. type su_exec, system_file_type, exec_type, file_type; userdebug_or_eng(` # Domain used for su processes, as well as for adbd and adb shell # after performing an adb root command. The domain definition is # wrapped to ensure that it does not exist at all on -user builds. typeattribute su mlstrustedsubject; # Add su to various domains net_domain(su) # grant su access to vndbinder vndbinder_use(su) dontaudit su self:capability_class_set *; dontaudit su kernel:security *; dontaudit su { kernel file_type }:system *; dontaudit su self:memprotect *; dontaudit su domain:{ process process2 } *; dontaudit su domain:fd *; dontaudit su domain:dir *; dontaudit su domain:lnk_file *; dontaudit su domain:{ fifo_file file } *; dontaudit su domain:socket_class_set *; dontaudit su domain:ipc_class_set *; dontaudit su domain:key *; dontaudit su fs_type:filesystem *; dontaudit su {fs_type dev_type file_type}:dir_file_class_set *; dontaudit su node_type:node *; dontaudit su node_type:{ tcp_socket udp_socket rawip_socket } *; dontaudit su netif_type:netif *; dontaudit su port_type:socket_class_set *; dontaudit su port_type:{ tcp_socket dccp_socket } *; dontaudit su domain:peer *; dontaudit su domain:binder *; dontaudit su property_type:property_service *; dontaudit su property_type:file *; dontaudit su service_manager_type:service_manager *; dontaudit su hwservice_manager_type:hwservice_manager *; dontaudit su vndservice_manager_type:service_manager *; dontaudit su servicemanager:service_manager list; dontaudit su hwservicemanager:hwservice_manager list; dontaudit su vndservicemanager:service_manager list; dontaudit su keystore:keystore_key *; dontaudit su domain:drmservice *; dontaudit su unlabeled:filesystem *; dontaudit su postinstall_file:filesystem *; dontaudit su domain:bpf *; dontaudit su unlabeled:vsock_socket *; dontaudit su self:perf_event *; # VTS tests run in the permissive su domain on debug builds, but the HALs # being tested run in enforcing mode. Because hal_foo_server is enforcing # su needs to be declared as hal_foo_client to grant hal_foo_server # permission to interact with it. typeattribute su halclientdomain; typeattribute su hal_allocator_client; typeattribute su hal_atrace_client; typeattribute su hal_audio_client; typeattribute su hal_authsecret_client; typeattribute su hal_bluetooth_client; typeattribute su hal_bootctl_client; typeattribute su hal_camera_client; typeattribute su hal_configstore_client; typeattribute su hal_confirmationui_client; typeattribute su hal_contexthub_client; typeattribute su hal_drm_client; typeattribute su hal_cas_client; typeattribute su hal_dumpstate_client; typeattribute su hal_fingerprint_client; typeattribute su hal_gatekeeper_client; typeattribute su hal_gnss_client; typeattribute su hal_graphics_allocator_client; typeattribute su hal_graphics_composer_client; typeattribute su hal_health_client; typeattribute su hal_input_classifier_client; typeattribute su hal_ir_client; typeattribute su hal_keymaster_client; typeattribute su hal_light_client; typeattribute su hal_memtrack_client; typeattribute su hal_neuralnetworks_client; typeattribute su hal_nfc_client; typeattribute su hal_oemlock_client; typeattribute su hal_power_client; typeattribute su hal_rebootescrow_client; typeattribute su hal_secure_element_client; typeattribute su hal_sensors_client; typeattribute su hal_telephony_client; typeattribute su hal_tetheroffload_client; typeattribute su hal_thermal_client; typeattribute su hal_tv_cec_client; typeattribute su hal_tv_input_client; typeattribute su hal_tv_tuner_client; typeattribute su hal_usb_client; typeattribute su hal_vibrator_client; typeattribute su hal_vr_client; typeattribute su hal_weaver_client; typeattribute su hal_wifi_client; typeattribute su hal_wifi_hostapd_client; typeattribute su hal_wifi_supplicant_client; ')