diff --git a/aosp/frameworks/base/core/java/android/os/storage/StorageManager.java b/aosp/frameworks/base/core/java/android/os/storage/StorageManager.java index e9daa4f8974bb775b66060252d41ac312af3562c..a43c924a28958a364e294abcea560e0df9af78a0 100644 --- a/aosp/frameworks/base/core/java/android/os/storage/StorageManager.java +++ b/aosp/frameworks/base/core/java/android/os/storage/StorageManager.java @@ -280,6 +280,8 @@ public class StorageManager { public static final int FLAG_STORAGE_CE = IInstalld.FLAG_STORAGE_CE; /** {@hide} */ public static final int FLAG_STORAGE_EXTERNAL = IInstalld.FLAG_STORAGE_EXTERNAL; + /** {@hide} */ + public static final int FLAG_SKIP_SELINUX_CHECK = IInstalld.FLAG_SKIP_SELINUX_CHECK; /** {@hide} */ public static final int FLAG_FOR_WRITE = 1 << 8; diff --git a/aosp/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java b/aosp/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java index 03367cbbaab3c828be7a4ccbed050ad6bbfa2630..1a96da36f4c030f3dbf4603629c8b60346f64cd9 100644 --- a/aosp/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java +++ b/aosp/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java @@ -22996,7 +22996,7 @@ public class PackageManagerService extends IPackageManager.Stub UserManagerInternal umInternal = mInjector.getUserManagerInternal(); StorageManagerInternal smInternal = mInjector.getStorageManagerInternal(); for (UserInfo user : mUserManager.getUsers(false /*excludeDying*/)) { - final int flags; + int flags; if (umInternal.isUserUnlockingOrUnlocked(user.id)) { flags = StorageManager.FLAG_STORAGE_DE | StorageManager.FLAG_STORAGE_CE; } else if (umInternal.isUserRunning(user.id)) { @@ -23005,6 +23005,10 @@ public class PackageManagerService extends IPackageManager.Stub continue; } + if (mSettings.isAssignAppUid(ps.appId)) { + flags |= StorageManager.FLAG_SKIP_SELINUX_CHECK; + } + if (ps.getInstalled(user.id)) { // TODO: when user data is locked, mark that we're still dirty prepareAppDataLIF(pkg, user.id, flags); diff --git a/aosp/frameworks/base/services/core/java/com/android/server/pm/Settings.java b/aosp/frameworks/base/services/core/java/com/android/server/pm/Settings.java index 1a6c69a4326b1e4e5fa6d313e77d3b2c3bddd412..94558a2baf3131e0bcb11447d2cbef7904078b63 100644 --- a/aosp/frameworks/base/services/core/java/com/android/server/pm/Settings.java +++ b/aosp/frameworks/base/services/core/java/com/android/server/pm/Settings.java @@ -1136,6 +1136,10 @@ public final class Settings { return true; } + public boolean isAssignAppUid(int uid) { + return mHwSettings.isAssignAppUid(uid); + } + /** Gets the setting associated with the provided App ID */ public SettingBase getSettingLPr(int appId) { if (mHwSettings.isAssignAppUid(appId)) { diff --git a/aosp/frameworks/native/cmds/installd/InstalldNativeService.cpp b/aosp/frameworks/native/cmds/installd/InstalldNativeService.cpp index 0bc7f71b9583a40f3b749e0856f9a91fdf5e9970..916f1aa4564c80afde9b7247b40846f6371a08c9 100644 --- a/aosp/frameworks/native/cmds/installd/InstalldNativeService.cpp +++ b/aosp/frameworks/native/cmds/installd/InstalldNativeService.cpp @@ -486,7 +486,7 @@ binder::Status InstalldNativeService::createAppData(const std::unique_ptr