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

Commit 2e31124b authored by Rubin Xu's avatar Rubin Xu
Browse files

Revert "Check DPC package validity during package updates"

This reverts commit 68da3128.

Temporarily reverting this to land a better fix.

Change-Id: I376a86525ec9041fcf909c7aa025bfc812d83306
parent 41a612e2
Loading
Loading
Loading
Loading
+9 −32
Original line number Diff line number Diff line
@@ -1504,33 +1504,6 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
        }
    }
    /**
     * Check if the package hosting the given ActiveAdmin is still installed and well-formed.
     */
    @GuardedBy("getLockObject()")
    private boolean isActiveAdminPackageValid(ActiveAdmin admin) throws RemoteException {
        final String adminPackage = admin.info.getPackageName();
        int userHandle = admin.getUserHandle().getIdentifier();
        if (mIPackageManager.getPackageInfo(adminPackage, 0, userHandle) == null) {
            Slogf.e(LOG_TAG, adminPackage + " no longer installed");
            return false;
        }
        ActivityInfo ai = mIPackageManager.getReceiverInfo(admin.info.getComponent(),
                GET_META_DATA | MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE,
                userHandle);
        if (ai == null) {
            Slogf.e(LOG_TAG, adminPackage + " no longer has the receiver");
            return false;
        }
        try {
            new DeviceAdminInfo(mContext, ai);
        } catch (Exception e) {
            Slogf.e(LOG_TAG, adminPackage + " contains malformed metadata", e);
            return false;
        }
        return true;
    }
    private void handlePackagesChanged(@Nullable String packageName, int userHandle) {
        boolean removedAdmin = false;
        String removedAdminPackage = null;
@@ -1544,13 +1517,17 @@ public class DevicePolicyManagerService extends IDevicePolicyManager.Stub {
                ActiveAdmin aa = policy.mAdminList.get(i);
                try {
                    // If we're checking all packages or if the specific one we're checking matches,
                    // then check if the package is still valid.
                    // then check if the package and receiver still exist.
                    final String adminPackage = aa.info.getPackageName();
                    if (packageName == null || packageName.equals(adminPackage)) {
                        if (!isActiveAdminPackageValid(aa)) {
                            Slogf.e(LOG_TAG, "Admin package %s not found or invalid for user %d,"
                                            + " removing active admin",
                                    packageName, userHandle);
                        if (mIPackageManager.getPackageInfo(adminPackage, 0, userHandle) == null
                                || mIPackageManager.getReceiverInfo(aa.info.getComponent(),
                                MATCH_DIRECT_BOOT_AWARE
                                        | MATCH_DIRECT_BOOT_UNAWARE,
                                userHandle) == null) {
                            Slogf.e(LOG_TAG, String.format(
                                    "Admin package %s not found for user %d, removing active admin",
                                    packageName, userHandle));
                            removedAdmin = true;
                            removedAdminPackage = adminPackage;
                            policy.mAdminList.remove(i);