2021-03-03 21:30:28 +01:00
|
|
|
# art service daemon
|
2022-05-26 14:55:33 +02:00
|
|
|
type artd, domain, coredomain;
|
2021-03-03 21:30:28 +01:00
|
|
|
type artd_exec, system_file_type, exec_type, file_type;
|
2022-05-26 14:55:33 +02:00
|
|
|
type artd_tmpfs, file_type;
|
2021-03-03 21:30:28 +01:00
|
|
|
|
|
|
|
# Allow artd to publish a binder service and make binder calls.
|
|
|
|
binder_use(artd)
|
|
|
|
add_service(artd, artd_service)
|
|
|
|
allow artd dumpstate:fifo_file { getattr write };
|
|
|
|
|
|
|
|
init_daemon_domain(artd)
|
2021-05-19 00:33:08 +02:00
|
|
|
|
|
|
|
# Allow query ART device config properties
|
|
|
|
get_prop(artd, device_config_runtime_native_prop)
|
|
|
|
get_prop(artd, device_config_runtime_native_boot_prop)
|
2022-05-26 14:55:33 +02:00
|
|
|
|
|
|
|
# Access to "odsign.verification.success" for deciding whether to deny files in
|
|
|
|
# the ART APEX data directory.
|
|
|
|
get_prop(artd, odsign_prop)
|
|
|
|
|
|
|
|
# Reading an APK opens a ZipArchive, which unpack to tmpfs.
|
|
|
|
# Use tmpfs_domain() which will give tmpfs files created by artd their
|
|
|
|
# own label, which differs from other labels created by other processes.
|
|
|
|
# This allows to distinguish in policy files created by artd vs other
|
|
|
|
# processes.
|
|
|
|
tmpfs_domain(artd)
|
|
|
|
|
|
|
|
# Allow testing userfaultfd support.
|
|
|
|
userfaultfd_use(artd)
|
|
|
|
|
|
|
|
# Read access to primary dex'es on writable partitions (e.g., /data/app/...).
|
|
|
|
r_dir_file(artd, apk_data_file)
|
|
|
|
|
|
|
|
# Read access to /vendor/app.
|
|
|
|
r_dir_file(artd, vendor_app_file)
|
|
|
|
|
2022-06-07 16:20:58 +02:00
|
|
|
# Read/write access to all compilation artifacts generated on device for apps'
|
|
|
|
# primary dex'es. (/data/dalvik-cache/..., /data/app/.../oat/..., etc.)
|
|
|
|
allow artd dalvikcache_data_file:dir create_dir_perms;
|
|
|
|
allow artd dalvikcache_data_file:file create_file_perms;
|
2022-05-26 14:55:33 +02:00
|
|
|
|
|
|
|
# Read access to the ART APEX data directory.
|
|
|
|
# Needed for reading the boot image generated on device.
|
|
|
|
allow artd apex_module_data_file:dir { getattr search };
|
|
|
|
r_dir_file(artd, apex_art_data_file)
|
|
|
|
|
|
|
|
# Read access to /apex/apex-info-list.xml
|
|
|
|
# Needed for getting APEX versions.
|
|
|
|
allow artd apex_info_file:file r_file_perms;
|
2022-06-07 16:20:58 +02:00
|
|
|
|
|
|
|
# Allow getting root capabilities to bypass permission checks.
|
|
|
|
# - "dac_override" and "dac_read_search" are for
|
|
|
|
# - reading secondary dex'es in app data directories (reading primary dex'es
|
|
|
|
# doesn't need root capabilities)
|
|
|
|
# - managing (CRUD) compilation artifacts in both APK directories for primary
|
|
|
|
# dex'es and in app data directories for secondary dex'es
|
|
|
|
# - managing (CRUD) profile files for both primary dex'es and secondary dex'es
|
|
|
|
# - "fowner" is for adjusting the file permissions of compilation artifacts and
|
|
|
|
# profile files based on whether they include user data or not.
|
|
|
|
allow artd self:global_capability_class_set { dac_override dac_read_search fowner };
|