From bffe163b13c5abfe493b4432807d8f64827a93cd Mon Sep 17 00:00:00 2001 From: Neda Topoljanac <tneda@google.com> Date: Wed, 21 Nov 2018 18:10:54 +0000 Subject: [PATCH] SELinux policy for new managed system update APIs We introduced a new API to allow Device Owner to install an OTA file on disk. This in turn requires system_server to be able to copy the OTA file to a known OTA file location, call into update_engine to start the installation and let update_engine to call back to the system_server to deliver any error conditions asynchronously. This CL modifies the SELinux policy to allow these interaction. Test: manual in TestDPC, CTS tests for negative cases: atest com.android.cts.devicepolicy.DeviceOwnerTest#testInstallUpdate Change-Id: Id1fbea9111f753c5c80f270c269ecb9ef141cd79 Bug: 111173669 --- private/system_server.te | 6 ++++++ public/update_engine.te | 3 +++ 2 files changed, 9 insertions(+) diff --git a/private/system_server.te b/private/system_server.te index 621385cbc..b88721e17 100644 --- a/private/system_server.te +++ b/private/system_server.te @@ -190,6 +190,7 @@ binder_call(system_server, incidentd) binder_call(system_server, netd) binder_call(system_server, statsd) binder_call(system_server, storaged) +binder_call(system_server, update_engine) binder_call(system_server, vold) binder_call(system_server, wificond) binder_call(system_server, wpantund) @@ -344,6 +345,10 @@ allow system_server audio_device:chr_file rw_file_perms; allow system_server tun_device:chr_file rw_file_perms; allowxperm system_server tun_device:chr_file ioctl { TUNGETIFF TUNSETIFF }; +# Manage data/ota_package +allow system_server ota_package_file:dir rw_dir_perms; +allow system_server ota_package_file:file create_file_perms; + # Manage system data files. allow system_server system_data_file:dir create_dir_perms; allow system_server system_data_file:notdevfile_class_set create_file_perms; @@ -680,6 +685,7 @@ allow system_server stats_service:service_manager find; allow system_server thermal_service:service_manager find; allow system_server storaged_service:service_manager find; allow system_server surfaceflinger_service:service_manager find; +allow system_server update_engine_service:service_manager find; allow system_server vold_service:service_manager find; allow system_server wificond_service:service_manager find; userdebug_or_eng(` diff --git a/public/update_engine.te b/public/update_engine.te index d13be7d28..65217266a 100644 --- a/public/update_engine.te +++ b/public/update_engine.te @@ -39,6 +39,9 @@ add_service(update_engine, update_engine_service) # Allow update_engine to call the callback function provided by priv_app. binder_call(update_engine, priv_app) +# Allow update_engine to call the callback function provided by system_server. +binder_call(update_engine, system_server) + # Read OTA zip file at /data/ota_package/. allow update_engine ota_package_file:file r_file_perms; allow update_engine ota_package_file:dir r_dir_perms; -- GitLab