blob: c39fb71f7e17776e8158de4c74e88f1d30416bb1 [file] [log] [blame]
type cros_cras, chromeos_domain, domain;
# TODO(fqj): enforce after ARC change landed.
permissive cros_cras;
from_minijail_static(cros_cras, cros_cras_exec);
allow cros_cras minijail:fd use;
allow cros_cras minijail:fifo_file { read write };
allow cros_cras cros_passwd_file:file r_file_perms;
allow cros_cras sysfs:file r_file_perms;
allow cros_cras sysfs:dir r_dir_perms;
allow cros_cras cras_socket:dir create_dir_perms;
allow cros_cras cras_socket:sock_file create_file_perms;
allow cros_cras self:netlink_kobject_uevent_socket create_socket_perms_no_ioctl;
r_dir_file(cros_cras, cros_run_udev);
filetrans_pattern(cros_cras, tmpfs, cros_shm, file); # android compatibility for cros_shm type.
allow cros_cras {tmpfs cros_shm}:dir create_dir_perms;
allow cros_cras {tmpfs cros_shm}:file create_file_perms;
allow cros_cras audio_device:dir r_dir_perms;
allow cros_cras audio_device:chr_file { open read write ioctl };
allow cros_cras audio_device:lnk_file read;
allow cros_cras input_device:dir { read search };
allow cros_cras input_device:chr_file { open read ioctl };
has_arc(`
allow cros_cras gpu_device:dir search;
',
`
allow cros_cras device:dir search;
allow cros_cras sysfs:dir search;
');
allow cros_cras proc_filesystems:file r_file_perms;
allow cros_cras self:socket { create ioctl };
log_writer(cros_cras);
uma_writer(cros_cras);
cros_dbus_client(cros_cras);
allow cros_cras_client_domain cros_shm:dir r_dir_perms;
allow cros_cras_client_domain cros_shm:file rw_file_perms; # /dev/shm/cras-*
allow cros_cras_client_domain cras_socket:dir r_dir_perms;
allow cros_cras_client_domain cros_cras:unix_stream_socket { read write };
allow cros_cras_client_domain cros_cras:fd use;
allow cros_cras cros_cras_client_domain:fd use;
allow cros_cras cros_cras_client_domain:unix_stream_socket { read write };
unix_socket_connect(cros_cras_client_domain, cras, cros_cras);