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

Commit 38509df5 authored by Jackal Guo's avatar Jackal Guo Committed by Automerger Merge Worker
Browse files

Merge "Enforce the permission and the owner rights earlier" into sc-dev am:...

Merge "Enforce the permission and the owner rights earlier" into sc-dev am: ef02ab47 am: ba7e9f3b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14934410

Change-Id: Ibcfb83436191cc6f4b117a02994e99717baba32d
parents 0ac9685a ba7e9f3b
Loading
Loading
Loading
Loading
+8 −2
Original line number Diff line number Diff line
@@ -24019,6 +24019,13 @@ public class PackageManagerService extends IPackageManager.Stub
        final int permission = mContext.checkCallingOrSelfPermission(
                android.Manifest.permission.CHANGE_COMPONENT_ENABLED_STATE);
        final boolean allowedByPermission = (permission == PackageManager.PERMISSION_GRANTED);
        if (!allowedByPermission
                && !ArrayUtils.contains(getPackagesForUid(callingUid), packageName)) {
            throw new SecurityException(
                    "Permission Denial: attempt to change stopped state from pid="
                            + Binder.getCallingPid()
                            + ", uid=" + callingUid + ", package=" + packageName);
        }
        enforceCrossUserPermission(callingUid, userId, true /* requireFullPermission */,
                true /* checkShell */, "stop package");
        boolean shouldUnhibernate = false;
@@ -24029,8 +24036,7 @@ public class PackageManagerService extends IPackageManager.Stub
                shouldUnhibernate = true;
            }
            if (!shouldFilterApplicationLocked(ps, callingUid, userId)
                    && mSettings.setPackageStoppedStateLPw(this, packageName, stopped,
                            allowedByPermission, callingUid, userId)) {
                    && mSettings.setPackageStoppedStateLPw(this, packageName, stopped, userId)) {
                scheduleWritePackageRestrictionsLocked(userId);
            }
        }
+1 −8
Original line number Diff line number Diff line
@@ -4188,18 +4188,11 @@ public final class Settings implements Watchable, Snappable {
    }

    boolean setPackageStoppedStateLPw(PackageManagerService pm, String packageName,
            boolean stopped, boolean allowedByPermission, int uid, int userId) {
        int appId = UserHandle.getAppId(uid);
            boolean stopped, int userId) {
        final PackageSetting pkgSetting = mPackages.get(packageName);
        if (pkgSetting == null) {
            throw new IllegalArgumentException("Unknown package: " + packageName);
        }
        if (!allowedByPermission && (appId != pkgSetting.appId)) {
            throw new SecurityException(
                    "Permission Denial: attempt to change stopped state from pid="
                    + Binder.getCallingPid()
                    + ", uid=" + uid + ", package uid=" + pkgSetting.appId);
        }
        if (DEBUG_STOPPED) {
            if (stopped) {
                RuntimeException e = new RuntimeException("here");