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

Commit 4fbbac24 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "[pm] Fix missing locks in PackageManagerService" into tm-dev

parents d34728c2 469ae062
Loading
Loading
Loading
Loading
+20 −18
Original line number Diff line number Diff line
@@ -90,6 +90,7 @@ class ChangedPackagesTracker {
    }

    void updateSequenceNumber(@NonNull String packageName, int[] userList) {
        synchronized (mLock) {
            for (int i = userList.length - 1; i >= 0; --i) {
                final int userId = userList[i];
                SparseArray<String> changedPackages = mUserIdToSequenceToPackage.get(userId);
@@ -112,3 +113,4 @@ class ChangedPackagesTracker {
            mChangedPackagesSequenceNumber++;
        }
    }
}
+15 −6
Original line number Diff line number Diff line
@@ -1543,6 +1543,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
    }

    // Link watchables to the class
    @SuppressWarnings("GuardedBy")
    private void registerObservers(boolean verify) {
        // Null check to handle nullable test parameters
        if (mPackages != null) {
@@ -2256,7 +2257,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService

    @GuardedBy("mLock")
    void updateInstantAppInstallerLocked(String modifiedPackage) {
        // we're only interested in updating the installer appliction when 1) it's not
        // we're only interested in updating the installer application when 1) it's not
        // already set or 2) the modified package is the installer
        if (mInstantAppInstallerActivity != null
                && !mInstantAppInstallerActivity.getComponentName().getPackageName()
@@ -2740,7 +2741,6 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        return mModuleInfoProvider.getModuleInfo(packageName, flags);
    }

    @GuardedBy("mLock")
    void updateSequenceNumberLP(PackageSetting pkgSetting, int[] userList) {
        mChangedPackagesTracker.updateSequenceNumber(pkgSetting.getPackageName(), userList);
    }
@@ -3074,8 +3074,8 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                userId);
    }

    private void enforceCanSetDistractingPackageRestrictionsAsUser(@NonNull Computer snapshot,
            int callingUid, int userId, String callingMethod) {
    private void enforceCanSetDistractingPackageRestrictionsAsUser(int callingUid, int userId,
            String callingMethod) {
        mContext.enforceCallingOrSelfPermission(Manifest.permission.SUSPEND_APPS,
                callingMethod);

@@ -3159,6 +3159,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }
    }

    @SuppressWarnings("GuardedBy")
    VersionInfo getSettingsVersionForPackage(AndroidPackage pkg) {
        if (pkg.isExternalStorage()) {
            if (TextUtils.isEmpty(pkg.getVolumeUuid())) {
@@ -3288,6 +3289,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
     * Update component enabled settings to {@link PackageManager#COMPONENT_ENABLED_STATE_DEFAULT}
     * if the resetEnabledSettingsOnAppDataCleared is {@code true}.
     */
    @GuardedBy("mLock")
    private void resetComponentEnabledSettingsIfNeededLPw(String packageName, int userId) {
        final AndroidPackage pkg = packageName != null ? mPackages.get(packageName) : null;
        if (pkg == null || !pkg.isResetEnabledSettingsOnAppDataCleared()) {
@@ -3879,6 +3881,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }
    }

    @GuardedBy("mLock")
    private boolean setEnabledSettingInternalLocked(@NonNull Computer computer,
            PackageSetting pkgSetting, ComponentEnabledSetting setting, @UserIdInt int userId,
            String callingPackage) {
@@ -4554,9 +4557,11 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                            final Computer snapshot = snapshotComputer();
                            unsuspendForSuspendingPackage(snapshot, packageName, userId);
                            removeAllDistractingPackageRestrictions(snapshot, userId);
                            synchronized (mLock) {
                                flushPackageRestrictionsAsUserInternalLocked(userId);
                            }
                        }
                    }
                    if (observer != null) {
                        try {
                            observer.onRemoveCompleted(packageName, succeeded);
@@ -4972,6 +4977,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }

        @Override
        @SuppressWarnings("GuardedBy")
        public int getRuntimePermissionsVersion(@UserIdInt int userId) {
            Preconditions.checkArgumentNonnegative(userId);
            enforceAdjustRuntimePermissionsPolicyOrUpgradeRuntimePermissions(
@@ -5576,7 +5582,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
                int restrictionFlags, int userId) {
            final int callingUid = Binder.getCallingUid();
            final Computer snapshot = snapshotComputer();
            enforceCanSetDistractingPackageRestrictionsAsUser(snapshot, callingUid, userId,
            enforceCanSetDistractingPackageRestrictionsAsUser(callingUid, userId,
                    "setDistractingPackageRestrictionsAsUser");
            Objects.requireNonNull(packageNames, "packageNames cannot be null");
            return mDistractingPackageHelper.setDistractingPackageRestrictionsAsUser(snapshot,
@@ -5845,6 +5851,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }

        @Override
        @SuppressWarnings("GuardedBy")
        public void setRuntimePermissionsVersion(int version, @UserIdInt int userId) {
            Preconditions.checkArgumentNonnegative(version);
            Preconditions.checkArgumentNonnegative(userId);
@@ -6363,6 +6370,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }

        @Override
        @SuppressWarnings("GuardedBy")
        public void updateRuntimePermissionsFingerprint(@UserIdInt int userId) {
            mSettings.updateRuntimePermissionsFingerprint(userId);
        }
@@ -6397,6 +6405,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
        }

        @Override
        @SuppressWarnings("GuardedBy")
        public boolean isPermissionUpgradeNeeded(int userId) {
            return mSettings.isPermissionUpgradeNeeded(userId);
        }