Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d69b083b authored by Jeff Sharkey's avatar Jeff Sharkey
Browse files

Fix recent checkPermission() bug.

It should be checking if the UID argument passed in has the requested
permission; not the calling UID.

Test: builds, boots
Bug: 34528367
Change-Id: Ie1828f571d9f143ce9f5bdca2eedcf2fa6ccfd79
parent dbb1176b
Loading
Loading
Loading
Loading
+8 −5
Original line number Diff line number Diff line
@@ -1591,13 +1591,16 @@ class ContextImpl extends Context {
        }

        final IActivityManager am = ActivityManager.getService();
        if (am == null && UserHandle.getAppId(Binder.getCallingUid()) == Process.SYSTEM_UID) {
        if (am == null) {
            // Well this is super awkward; we somehow don't have an active
            // ActivityManager instance. If this is the system UID, then we
            // totally have whatever permission this is.
            Slog.w(TAG, "Missing ActivityManager; assuming system UID holds " + permission);
            // 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) {
                Slog.w(TAG, "Missing ActivityManager; assuming " + uid + " holds " + permission);
                return PackageManager.PERMISSION_GRANTED;
            }
        }

        try {
            return am.checkPermission(permission, pid, uid);