| # wificond |
| type wificond, domain; |
| type wificond_exec, exec_type, file_type; |
| |
| binder_use(wificond) |
| binder_call(wificond, system_server) |
| binder_call(wificond, wpa) |
| |
| hwbinder_use(wificond) |
| binder_call(wificond, wifi_hal_legacy) |
| |
| allow wificond wificond_service:service_manager { add find }; |
| |
| # wificond writes firmware paths to this file. |
| # wificond also changes the owership of this file on startup. |
| allow wificond sysfs_wlan_fwpath:file { w_file_perms setattr }; |
| |
| set_prop(wificond, wifi_prop) |
| set_prop(wificond, ctl_default_prop) |
| |
| # create sockets to set interfaces up and down |
| allow wificond self:udp_socket create_socket_perms; |
| # setting interface state up/down is a privileged ioctl |
| allowxperm wificond self:udp_socket ioctl { SIOCSIFFLAGS }; |
| allow wificond self:capability { net_admin net_raw }; |
| # allow wificond to speak to nl80211 in the kernel |
| allow wificond self:netlink_socket create_socket_perms_no_ioctl; |
| # newer kernels (e.g. 4.4 but not 4.1) have a new class for sockets |
| allow wificond self:netlink_generic_socket create_socket_perms_no_ioctl; |
| |
| r_dir_file(wificond, proc_net) |
| |
| # wificond writes out configuration files for wpa_supplicant/hostapd. |
| # wificond also reads pid files out of this directory |
| allow wificond wifi_data_file:dir rw_dir_perms; |
| allow wificond wifi_data_file:file create_file_perms; |
| |
| # wificond drops root shortly after starting |
| # wificond changes the ownership of some files before dropping root |
| allow wificond self:capability { setuid setgid setpcap chown }; |
| |
| # wificond cleans up sockets created by wpa_supplicant and framework |
| allow wificond wpa_socket:dir rw_dir_perms; |
| allow wificond system_wpa_socket:sock_file unlink; |
| allow wificond wpa_socket:sock_file unlink; |
| |
| # dumpstate support |
| allow wificond dumpstate:fd use; |
| allow wificond dumpstate:fifo_file write; |