From 41f233f4658f20ac36845ed262bfeb8a7a9eea45 Mon Sep 17 00:00:00 2001 From: Narayan Kamath <narayan@google.com> Date: Thu, 14 May 2015 14:01:24 +0100 Subject: [PATCH] Allow system_server to link,relabel and create_dir dalvikcache_data_file. Required by the installation flow for split APKs. bug: 20889739 Change-Id: I3e14335f3bcfe76d1d24d233f53a728a6d90e8a1 --- domain.te | 4 ++++ system_server.te | 19 +++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/domain.te b/domain.te index fc4cfd85a..19de0c0af 100644 --- a/domain.te +++ b/domain.te @@ -350,6 +350,10 @@ neverallow { -zygote -installd -dex2oat + -system_server # TODO: The system server needs to create directories + # and link files for split APK installs. This could perhaps be + # removed if we made installd responsible for manipulating the + # staging directory. } dalvikcache_data_file:file no_w_file_perms; # Only system_server should be able to send commands via the zygote socket diff --git a/system_server.te b/system_server.te index 0b18eb4b6..5d1398ab1 100644 --- a/system_server.te +++ b/system_server.te @@ -16,6 +16,25 @@ allow system_server system_server_tmpfs:file execute; allow system_server dalvikcache_data_file:file execute; allow system_server dalvikcache_data_file:dir r_dir_perms; +# For PackageInstallerSession. +# +# All of these rules relate to the installation and compilation of split +# APKs. Roughly, the process is as follows. The rules below only pertain +# to step (3) of the process +# +# (1) Create a staging directory. +# (2) Link existing APKs from the split +# +# (3) Link existing compiled oat files : This requires "create_dir_perms" +# to create oat directories (foo/oat and foo/oat/x86), "relabelto" to +# make sure they have the right label, and "link" to link files. +# +# (3) Invoke dex2oat to compile the updated / new split +# (4) Rename the staging directory back to the final path. +allow system_server dalvikcache_data_file:file link; +allow system_server dalvikcache_data_file:dir relabelto; +allow system_server dalvikcache_data_file:dir create_dir_perms; + # /data/resource-cache allow system_server resourcecache_data_file:file r_file_perms; allow system_server resourcecache_data_file:dir r_dir_perms; -- GitLab