2017-04-13 16:51:36 +02:00
|
|
|
# bluetooth app
|
2017-02-07 00:27:19 +01:00
|
|
|
|
2020-02-11 15:43:05 +01:00
|
|
|
typeattribute bluetooth coredomain, mlstrustedsubject;
|
2017-02-07 00:27:19 +01:00
|
|
|
|
|
|
|
app_domain(bluetooth)
|
|
|
|
net_domain(bluetooth)
|
|
|
|
|
2016-07-22 22:13:11 +02:00
|
|
|
# Socket creation under /data/misc/bluedroid.
|
|
|
|
type_transition bluetooth bluetooth_data_file:sock_file bluetooth_socket;
|
2016-10-12 23:58:09 +02:00
|
|
|
|
2017-02-07 00:27:19 +01:00
|
|
|
# Allow access to net_admin ioctls
|
|
|
|
allowxperm bluetooth self:udp_socket ioctl priv_sock_ioctls;
|
|
|
|
|
|
|
|
wakelock_use(bluetooth);
|
|
|
|
|
|
|
|
# Data file accesses.
|
|
|
|
allow bluetooth bluetooth_data_file:dir create_dir_perms;
|
|
|
|
allow bluetooth bluetooth_data_file:notdevfile_class_set create_file_perms;
|
|
|
|
allow bluetooth bluetooth_logs_data_file:dir rw_dir_perms;
|
|
|
|
allow bluetooth bluetooth_logs_data_file:file create_file_perms;
|
|
|
|
|
|
|
|
# Socket creation under /data/misc/bluedroid.
|
|
|
|
allow bluetooth bluetooth_socket:sock_file create_file_perms;
|
|
|
|
|
2017-11-09 23:51:26 +01:00
|
|
|
allow bluetooth self:global_capability_class_set net_admin;
|
|
|
|
allow bluetooth self:global_capability2_class_set wake_alarm;
|
2017-02-07 00:27:19 +01:00
|
|
|
|
|
|
|
# tethering
|
|
|
|
allow bluetooth self:packet_socket create_socket_perms_no_ioctl;
|
2017-11-09 23:51:26 +01:00
|
|
|
allow bluetooth self:global_capability_class_set { net_admin net_raw net_bind_service };
|
2017-02-07 00:27:19 +01:00
|
|
|
allow bluetooth self:tun_socket create_socket_perms_no_ioctl;
|
|
|
|
allow bluetooth tun_device:chr_file rw_file_perms;
|
2018-11-10 18:03:10 +01:00
|
|
|
allowxperm bluetooth tun_device:chr_file ioctl { TUNGETIFF TUNSETIFF };
|
2017-02-07 00:27:19 +01:00
|
|
|
allow bluetooth efs_file:dir search;
|
|
|
|
|
2017-04-19 03:06:41 +02:00
|
|
|
# allow Bluetooth to access uhid device for HID profile
|
|
|
|
allow bluetooth uhid_device:chr_file rw_file_perms;
|
|
|
|
|
2017-02-07 00:27:19 +01:00
|
|
|
# proc access.
|
|
|
|
allow bluetooth proc_bluetooth_writable:file rw_file_perms;
|
|
|
|
|
|
|
|
# Allow write access to bluetooth specific properties
|
2020-01-17 19:06:16 +01:00
|
|
|
set_prop(bluetooth, binder_cache_bluetooth_server_prop);
|
|
|
|
neverallow { domain -bluetooth -init }
|
|
|
|
binder_cache_bluetooth_server_prop:property_service set;
|
2018-04-09 05:07:32 +02:00
|
|
|
set_prop(bluetooth, bluetooth_a2dp_offload_prop)
|
2019-03-18 04:07:32 +01:00
|
|
|
set_prop(bluetooth, bluetooth_audio_hal_prop)
|
2017-02-07 00:27:19 +01:00
|
|
|
set_prop(bluetooth, bluetooth_prop)
|
2018-04-09 05:07:32 +02:00
|
|
|
set_prop(bluetooth, exported_bluetooth_prop)
|
2017-02-07 00:27:19 +01:00
|
|
|
set_prop(bluetooth, pan_result_prop)
|
|
|
|
|
|
|
|
allow bluetooth audioserver_service:service_manager find;
|
|
|
|
allow bluetooth bluetooth_service:service_manager find;
|
|
|
|
allow bluetooth drmserver_service:service_manager find;
|
|
|
|
allow bluetooth mediaserver_service:service_manager find;
|
|
|
|
allow bluetooth radio_service:service_manager find;
|
|
|
|
allow bluetooth app_api_service:service_manager find;
|
|
|
|
allow bluetooth system_api_service:service_manager find;
|
2019-01-13 07:41:48 +01:00
|
|
|
allow bluetooth network_stack_service:service_manager find;
|
2020-10-14 02:31:01 +02:00
|
|
|
allow bluetooth system_suspend_control_service:service_manager find;
|
2017-02-07 00:27:19 +01:00
|
|
|
|
|
|
|
# already open bugreport file descriptors may be shared with
|
|
|
|
# the bluetooth process, from a file in
|
|
|
|
# /data/data/com.android.shell/files/bugreports/bugreport-*.
|
|
|
|
allow bluetooth shell_data_file:file read;
|
|
|
|
|
2017-03-23 18:03:49 +01:00
|
|
|
# Bluetooth audio needs RT scheduling to meet deadlines, allow sys_nice
|
2017-11-09 23:51:26 +01:00
|
|
|
allow bluetooth self:global_capability_class_set sys_nice;
|
2017-03-23 18:03:49 +01:00
|
|
|
|
Switch Bluetooth HAL policy to _client/_server
This switches Bluetooth HAL policy to the design which enables us to
conditionally remove unnecessary rules from domains which are clients
of Bluetooth HAL.
Domains which are clients of Bluetooth HAL, such as bluetooth domain,
are granted rules targeting hal_bluetooth only when the Bluetooth HAL
runs in passthrough mode (i.e., inside the client's process). When the
HAL runs in binderized mode (i.e., in another process/domain, with
clients talking to the HAL over HwBinder IPC), rules targeting
hal_bluetooth are not granted to client domains.
Domains which offer a binderized implementation of Bluetooth HAL, such
as hal_bluetooth_default domain, are always granted rules targeting
hal_bluetooth.
Test: Toggle Bluetooth off and on
Test: Pair with another Android, and transfer a file to that Android
over Bluetooth
Test: Pair with a Bluetooth speaker, play music through that
speaker over Bluetooth
Test: Add bluetooth_hidl_hal_test to device.mk, build & add to device,
adb shell stop,
adb shell /data/nativetest64/bluetooth_hidl_hal_test/bluetooth_hidl_hal_test
Bug: 34170079
Change-Id: I05c3ccf1e98cbbc1450a81bb1000c4fb75eb8a83
2017-02-17 05:14:56 +01:00
|
|
|
hal_client_domain(bluetooth, hal_bluetooth)
|
2017-03-17 02:48:40 +01:00
|
|
|
hal_client_domain(bluetooth, hal_telephony)
|
2017-02-07 00:27:19 +01:00
|
|
|
|
2017-10-30 20:58:20 +01:00
|
|
|
# Bluetooth A2DP offload requires binding with audio HAL
|
|
|
|
hal_client_domain(bluetooth, hal_audio)
|
|
|
|
|
2017-02-07 00:27:19 +01:00
|
|
|
read_runtime_log_tags(bluetooth)
|
|
|
|
|
|
|
|
###
|
|
|
|
### Neverallow rules
|
|
|
|
###
|
|
|
|
### These are things that the bluetooth app should NEVER be able to do
|
|
|
|
###
|
|
|
|
|
|
|
|
# Superuser capabilities.
|
2017-03-23 18:03:49 +01:00
|
|
|
# Bluetooth requires net_{admin,raw,bind_service} and wake_alarm and block_suspend and sys_nice.
|
2017-11-09 23:51:26 +01:00
|
|
|
neverallow bluetooth self:global_capability_class_set ~{ net_admin net_raw net_bind_service sys_nice};
|
|
|
|
neverallow bluetooth self:global_capability2_class_set ~{ wake_alarm block_suspend };
|