1 # bluetooth subsystem 2 type bluetooth, domain; 3 app_domain(bluetooth) 4 net_domain(bluetooth) 5 6 # Data file accesses. 7 allow bluetooth bluetooth_data_file:dir create_dir_perms; 8 allow bluetooth bluetooth_data_file:notdevfile_class_set create_file_perms; 9 10 # Socket creation under /data/misc/bluedroid. 11 type_transition bluetooth bluetooth_data_file:sock_file bluetooth_socket; 12 allow bluetooth bluetooth_socket:sock_file create_file_perms; 13 14 # bluetooth factory file accesses. 15 r_dir_file(bluetooth, bluetooth_efs_file) 16 17 # Device accesses. 18 allow bluetooth { tun_device uhid_device hci_attach_dev }:chr_file rw_file_perms; 19 20 # Other domains that can create and use bluetooth sockets. 21 # SELinux does not presently define a specific socket class for 22 # bluetooth sockets, nor does it distinguish among the bluetooth protocols. 23 # TODO: This should no longer be needed with bluedroid for bluetooth 24 # but may be getting used for other non-bluetooth sockets that has no 25 # specific class defined. Consider taking to specific domains. 26 allow bluetoothdomain self:socket create_socket_perms; 27 28 # sysfs access. 29 allow bluetooth sysfs_bluetooth_writable:file rw_file_perms; 30 allow bluetooth self:capability net_admin; 31 allow bluetooth self:capability2 wake_alarm; 32 33 # Allow clients to use a socket provided by the bluetooth app. 34 # TODO: See if this is still required under bluedroid. 35 allow bluetoothdomain bluetooth:unix_stream_socket { getopt setopt getattr read write ioctl shutdown }; 36 37 # tethering 38 allow bluetooth self:tun_socket create_socket_perms; 39 allow bluetooth efs_file:dir search; 40 41 # Talk to init over the property socket. 42 unix_socket_connect(bluetooth, property, init) 43 44 # proc access. 45 allow bluetooth proc_bluetooth_writable:file rw_file_perms; 46 47 # Allow write access to bluetooth specific properties 48 allow bluetooth bluetooth_prop:property_service set; 49 allow bluetooth pan_result_prop:property_service set; 50 allow bluetooth ctl_dhcp_pan_prop:property_service set; 51 52 ### 53 ### Neverallow rules 54 ### 55 ### These are things that the bluetooth app should NEVER be able to do 56 ### 57 58 # Superuser capabilities. 59 # bluetooth requires net_admin and wake_alarm. 60 neverallow bluetooth self:capability ~net_admin; 61 neverallow bluetooth self:capability2 ~wake_alarm; 62