summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCalin Juravle <calin@google.com>2021-05-06 15:25:32 -0700
committeralk3pInjection <webmaster@raspii.tech>2021-10-13 20:21:39 +0800
commitf81f54166221fa68492e4c3a19b26047d31741b9 (patch)
tree101328d27391ecb46123c1cf0d0db3b72b4aeb67
parent1ba1f89e6edc78f03d649d09b58b25c7c8d935fe (diff)
[master] Enforce system/root/shell for dexopt operation.
Dexopt acquires system level locks (e.g. installd locks) so it should not be called by artbitrary apps via `adb shell` commands. Test: manual Bug: 180652564 Change-Id: I385d5346df7721d95edf40c45d06b969870e4bda
-rw-r--r--services/core/java/com/android/server/pm/PackageManagerService.java2
1 files changed, 2 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 2a47d14370a3..36f4ac9414ac 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -10017,6 +10017,8 @@ public class PackageManagerService extends IPackageManager.Stub
public boolean performDexOptMode(String packageName,
boolean checkProfiles, String targetCompilerFilter, boolean force,
boolean bootComplete, String splitName) {
+ enforceSystemOrRootOrShell("performDexOptMode");
+
int flags = (checkProfiles ? DexoptOptions.DEXOPT_CHECK_FOR_PROFILES_UPDATES : 0) |
(force ? DexoptOptions.DEXOPT_FORCE : 0) |
(bootComplete ? DexoptOptions.DEXOPT_BOOT_COMPLETE : 0);