diff options
| author | 2025-01-02 14:41:30 -0800 | |
|---|---|---|
| committer | 2025-01-02 14:41:30 -0800 | |
| commit | a7c44f04df94b51edbe2a3b4fddfa3c07fa2c6f1 (patch) | |
| tree | 2af4641c18e8d387197bc961f9141c369b3eaf53 | |
| parent | 58c73246e65934fa5a63952a656c31114cd1707c (diff) | |
| parent | a7f8e727dcf5b3622bea12013896081b967388a3 (diff) | |
Merge "Move permission-by-UID check earlier" into main am: d8c71d286b am: a7f8e727dc
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/3404489
Change-Id: I42075d3d3221a41b8d3bfa419adf6b77ef76410e
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
| -rw-r--r-- | core/java/android/permission/PermissionManager.java | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java index bdf8d23438df..343d7527ea98 100644 --- a/core/java/android/permission/PermissionManager.java +++ b/core/java/android/permission/PermissionManager.java @@ -1716,20 +1716,14 @@ public final class PermissionManager { private static int checkPermissionUncached(@Nullable String permission, int pid, int uid, int deviceId) { + final int appId = UserHandle.getAppId(uid); + if (appId == Process.ROOT_UID || appId == Process.SYSTEM_UID) { + return PackageManager.PERMISSION_GRANTED; + } final IActivityManager am = ActivityManager.getService(); if (am == null) { - // Well this is super awkward; we somehow don't have an active ActivityManager - // instance. If we're testing a root or system UID, then they totally have whatever - // permission this is. - final int appId = UserHandle.getAppId(uid); - if (appId == Process.ROOT_UID || appId == Process.SYSTEM_UID) { - if (sShouldWarnMissingActivityManager) { - Slog.w(LOG_TAG, "Missing ActivityManager; assuming " + uid + " holds " - + permission); - sShouldWarnMissingActivityManager = false; - } - return PackageManager.PERMISSION_GRANTED; - } + // We don't have an active ActivityManager instance and the calling UID is not root or + // system, so we don't grant this permission. Slog.w(LOG_TAG, "Missing ActivityManager; assuming " + uid + " does not hold " + permission); return PackageManager.PERMISSION_DENIED; |