10a639613a
Wi-Fi vendor AIDL service uses NDK to register itself to service manager. AServiceManager_registerLazyService registers an IClientCallback to service manager. The callback is invoked when there is a transition between having >= 1 clients and having 0 clients (or vice versa). Please check IClientCallback.aidl. As a result servicemanager may make binder call to Wi-Fi vendor AIDL service. Since this is not allowed per current SE policies, "avc denied" occurred: servicemanager: type=1400 audit(0.0:248): avc: denied { call } for scontext=u:r:servicemanager:s0 tcontext=u:r:hal_wifi_default:s0 tclass=binder permissive=0 We add SE policy for hal_wifi_default to allow binder call like this. Bug: 270511173 Test: manually build and test, check logs for avc denied Change-Id: Ia6fcf5fc1cafff0381fc9857805bdc61cc838c1e
35 lines
1.5 KiB
Text
35 lines
1.5 KiB
Text
# HwBinder IPC from client to server, and callbacks
|
|
binder_call(hal_wifi_client, hal_wifi_server)
|
|
binder_call(hal_wifi_server, hal_wifi_client)
|
|
|
|
hal_attribute_hwservice(hal_wifi, hal_wifi_hwservice)
|
|
hal_attribute_service(hal_wifi, hal_wifi_service)
|
|
|
|
binder_use(hal_wifi_server)
|
|
|
|
r_dir_file(hal_wifi, proc_net_type)
|
|
r_dir_file(hal_wifi, sysfs_type)
|
|
|
|
set_prop(hal_wifi_server, wifi_hal_prop)
|
|
set_prop(hal_wifi, wifi_prop)
|
|
userdebug_or_eng(`get_prop(hal_wifi, persist_vendor_debug_wifi_prop)')
|
|
|
|
# allow hal wifi set interfaces up and down and get the factory MAC
|
|
allow hal_wifi self:udp_socket create_socket_perms;
|
|
allowxperm hal_wifi self:udp_socket ioctl { SIOCSIFFLAGS SIOCSIFHWADDR SIOCETHTOOL };
|
|
|
|
allow hal_wifi self:global_capability_class_set { net_admin net_raw };
|
|
# allow hal_wifi to speak to nl80211 in the kernel
|
|
allow hal_wifi 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 hal_wifi self:netlink_generic_socket create_socket_perms_no_ioctl;
|
|
# hal_wifi writes firmware paths to this file.
|
|
allow hal_wifi sysfs_wlan_fwpath:file { w_file_perms };
|
|
# allow hal_wifi to access /proc/modules to check if Wi-Fi driver is loaded
|
|
allow hal_wifi proc_modules:file { getattr open read };
|
|
# Allow hal_wifi to send dump info to dumpstate
|
|
allow hal_wifi dumpstate:fifo_file write;
|
|
|
|
# allow hal_wifi to write into /data/vendor/tombstones/wifi
|
|
allow hal_wifi_server tombstone_wifi_data_file:dir rw_dir_perms;
|
|
allow hal_wifi_server tombstone_wifi_data_file:file create_file_perms;
|