type gpsd, domain; type gpsd_exec, exec_type, file_type, vendor_file_type; init_daemon_domain(gpsd) # Automatically label files created in /data/system/gps as gps_data_file file_type_auto_trans(gpsd, system_data_file, gps_data_file) # Allow rild and netd to connect to gpsd unix_socket_connect(gpsd, property, rild) unix_socket_connect(gpsd, property, netd) allow gpsd system_server:unix_stream_socket rw_socket_perms; binder_call(gpsd, system_server) binder_use(gpsd) # Sockets type_transition gpsd gps_data_file:sock_file gps_socket; allow gpsd dnsproxyd_socket:sock_file write; allow gpsd fwmarkd_socket:sock_file write; allow gpsd gps_socket:sock_file create_file_perms; allow gpsd self:udp_socket create_socket_perms; # sysfs_gps allow gpsd sysfs_gps:dir search; allow gpsd sysfs_gps:lnk_file read; allow gpsd sysfs_gps:file rw_file_perms; # /dev/ttySAC3 allow gpsd gps_device:chr_file { setattr rw_file_perms }; allow gpsd gps_data_file:dir rw_dir_perms; allow gpsd gps_data_file:fifo_file create_file_perms; allow gpsd sysfs_wake_lock:file rw_file_perms; allow gpsd sensorservice_service:service_manager find; # /dev/umts_boot0 allow gpsd mif_device:chr_file r_file_perms; # TCP sockets allow gpsd port:tcp_socket { name_connect name_bind }; allow gpsd self:tcp_socket create_socket_perms; allow gpsd node:tcp_socket node_bind; # sec sysfs files #allow gpsd sysfs_sec:dir search; # hwservicemanager ready prop allow gpsd hwservicemanager:binder call; allow gpsd hwservicemanager_prop:file { open read getattr};