From dd6efea232c875ecf1dcb4a4feebcfa59590719c Mon Sep 17 00:00:00 2001
From: Bowgo Tsai <bowgotsai@google.com>
Date: Sun, 11 Mar 2018 18:20:29 +0800
Subject: [PATCH] Adding /odm support

/odm partition isn't mandatory and the following symlinks will exist on
a device without /odm partition.

  /odm/app ->/vendor/odm/app
  /odm/bin ->/vendor/odm/bin
  /odm/etc ->/vendor/odm/etc
  /odm/firmware ->/vendor/odm/firmware
  /odm/framework ->/vendor/odm/framework
  /odm/lib -> /vendor/odm/lib
  /odm/lib64 -> /vendor/odm/lib64
  /odm/overlay -> /vendor/odm/overlay
  /odm/priv-app -> /vendor/odm/priv-app

This CL allows all domains to access the symlinks, also removes the
Treble compliance neverallows on them because the actual restrictions
should apply to the real path directly.

Bug: 70678783
Test: boot a device
Change-Id: If1522780a13710d8a592272dc688685cbae29f52
---
 public/domain.te | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/public/domain.te b/public/domain.te
index fc9c0a95a..b079b072f 100644
--- a/public/domain.te
+++ b/public/domain.te
@@ -180,8 +180,9 @@ allow domain vendor_configs_file:dir r_dir_perms;
 allow domain vendor_configs_file:file { read open getattr };
 
 full_treble_only(`
-    # Allow all domains to be able to follow /system/vendor symlink
-    allow domain vendor_file:lnk_file { getattr open read };
+    # Allow all domains to be able to follow /system/vendor and/or
+    # /vendor/odm symlinks.
+    allow domain vendor_file_type:lnk_file { getattr open read };
 
     # This is required to be able to search & read /vendor/lib64
     # in order to lookup vendor libraries. The execute permission
@@ -912,7 +913,7 @@ full_treble_only(`
         userdebug_or_eng(`-perfprofd')
         -postinstall_dexopt
         -system_server
-    } vendor_app_file:{ file lnk_file } r_file_perms;
+    } vendor_app_file:file r_file_perms;
 ')
 
 full_treble_only(`
@@ -939,7 +940,7 @@ full_treble_only(`
         -system_server
         -webview_zygote
         -zygote
-    } vendor_overlay_file:{ file lnk_file } r_file_perms;
+    } vendor_overlay_file:file r_file_perms;
 ')
 
 full_treble_only(`
-- 
GitLab