type stats, domain; typeattribute stats coredomain; type stats_exec, system_file_type, exec_type, file_type; # switch to stats domain for stats command domain_auto_trans(shell, stats_exec, stats) # allow stats access to stdout from its parent shell. allow stats shell:fd use; # allow stats to communicate use, read and write over the adb # connection. allow stats adbd:fd use; allow stats adbd:unix_stream_socket { read write }; # allow adbd to reap stats allow stats adbd:process { sigchld }; # Allow the stats command to talk to the statsd over the binder, and get # back the stats report data from a ParcelFileDescriptor. binder_use(stats) allow stats stats_service:service_manager find; binder_call(stats, statsd) allow stats statsd:fifo_file write; # Only statsd can publish the binder service. add_service(statsd, stats_service) # Allow pipes from (and only from) stats. allow statsd stats:fd use; allow statsd stats:fifo_file write; # Allow statsd to call back to stats with status updates. binder_call(statsd, stats) ### ### neverallow rules ### neverallow { domain -dumpstate -gmscore_app -gpuservice -incidentd -platform_app -priv_app -shell -stats -statsd -surfaceflinger -system_app -system_server -traceur_app } stats_service:service_manager find;