Skip to content
Snippets Groups Projects
  • Alex Klyubin's avatar
    Vendor domains must not use Binder · f5446eb1
    Alex Klyubin authored
    On PRODUCT_FULL_TREBLE devices, non-vendor domains (except vendor
    apps) are not permitted to use Binder. This commit thus:
    * groups non-vendor domains using the new "coredomain" attribute,
    * adds neverallow rules restricting Binder use to coredomain and
      appdomain only, and
    * temporarily exempts the domains which are currently violating this
      rule from this restriction. These domains are grouped using the new
      "binder_in_vendor_violators" attribute. The attribute is needed
      because the types corresponding to violators are not exposed to the
      public policy where the neverallow rules are.
    
    Test: mmm system/sepolicy
    Test: Device boots, no new denials
    Test: In Chrome, navigate to ip6.me, play a YouTube video
    Test: YouTube: play a video
    Test: Netflix: play a movie
    Test: Google Camera: take a photo, take an HDR+ photo, record video with
          sound, record slow motion video with sound. Confirm videos play
          back fine and with sound.
    Bug: 35870313
    Change-Id: I0cd1a80b60bcbde358ce0f7a47b90f4435a45c95
    f5446eb1
incident.te 792 B
typeattribute incident coredomain;

type incident_exec, exec_type, file_type;

# switch to incident domain for incident command
domain_auto_trans(shell, incident_exec, incident)

# allow incident access to stdout from its parent shell.
allow incident shell:fd use;

# allow incident to communicate use, read and write over the adb
# connection.
allow incident adbd:fd use;
allow incident adbd:unix_stream_socket { read write };

# allow adbd to reap incident
allow incident adbd:process { sigchld };

# Allow the incident command to talk to the incidentd over the binder, and get
# back the incident report data from a ParcelFileDescriptor.
binder_use(incident)
allow incident incident_service:service_manager find;
binder_call(incident, incidentd)
allow incident incidentd:fifo_file write;