Skip to content
Snippets Groups Projects
  • Alex Klyubin's avatar
    Switch Allocator HAL policy to _client/_server · 08d6f566
    Alex Klyubin authored
    This switches Allocator HAL policy to the design which enables us to
    identify all SELinux domains which host HALs and all domains which are
    clients of HALs.
    
    Allocator HAL is special in the sense that it's assumed to be always
    binderized. As a result, rules in Camera HAL target hal_allocator_server
    rather than hal_allocator (which would be the server and any client, if
    the Allocator HAL runs in passthrough mode).
    
    Test: Device boots up, no new denials
    Test: YouTube video plays back
    Test: Take photo using Google Camera app, recover a video, record a slow
          motion video
    Bug: 34170079
    Change-Id: Ifbbca554ec221712361ee6cda94c82f254d84936
    08d6f566
hal_camera.te 1.36 KiB
# HwBinder IPC from clients to server and callbacks
binder_call(hal_camera_client, hal_camera_server)
binder_call(hal_camera_server, hal_camera_client)

# access /data/misc/camera
allow hal_camera camera_data_file:dir create_dir_perms;
allow hal_camera camera_data_file:file create_file_perms;

allow hal_camera video_device:dir r_dir_perms;
allow hal_camera video_device:chr_file rw_file_perms;
allow hal_camera camera_device:chr_file rw_file_perms;
allow hal_camera ion_device:chr_file rw_file_perms;
# Both the client and the server need to use the graphics allocator
allow { hal_camera_client hal_camera_server } hal_graphics_allocator:fd use;

# Allow hal_camera to use fd from app,gralloc,and ashmem HAL
allow hal_camera { appdomain -isolated_app }:fd use;
allow hal_camera surfaceflinger:fd use;
allow hal_camera hal_allocator_server:fd use;

###
### neverallow rules
###

# hal_camera should never execute any executable without a
# domain transition
neverallow hal_camera { file_type fs_type }:file execute_no_trans;

# hal_camera should never need network access. Disallow network sockets.
neverallow hal_camera domain:{ tcp_socket udp_socket rawip_socket } *;

# Only camera HAL may directly access the camera and video hardware
neverallow { halserverdomain -hal_camera_server } camera_device:chr_file *;
neverallow { halserverdomain -hal_camera_server } video_device:chr_file *;