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

Commit 235272a2 authored by Svet Ganov's avatar Svet Ganov Committed by Svetoslav Ganov
Browse files

Don't allow acccess to uninstalled system providers

If system providers are not installed yet we aggressively crash to avoid
creating multiple instance of these providers and then bad things happen!

Test: manual

Bug: 72457712

Change-Id: I5d7da8c05c08f719a8996b48bffa2317193c1275
parent 5e0957aa
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -1266,6 +1266,8 @@ public class ActivityManagerService extends IActivityManager.Stub
        }
    }
    boolean mSystemProvidersInstalled;
    CoreSettingsObserver mCoreSettingsObserver;
    FontScaleSettingObserver mFontScaleSettingObserver;
@@ -12110,6 +12112,14 @@ public class ActivityManagerService extends IActivityManager.Stub
                            "Attempt to launch content provider before system ready");
                }
                // If system providers are not installed yet we aggressively crash to avoid
                // creating multiple instance of these providers and then bad things happen!
                if (!mSystemProvidersInstalled && cpi.applicationInfo.isSystemApp()
                        && "system".equals(cpi.processName)) {
                    throw new IllegalStateException("Cannot access system provider: '"
                            + cpi.authority + "' before system providers are installed!");
                }
                // Make sure that the user who owns this provider is running.  If not,
                // we don't want to allow it to run.
                if (!mUserController.isUserRunning(userId, 0)) {
@@ -12663,6 +12673,10 @@ public class ActivityManagerService extends IActivityManager.Stub
            mSystemThread.installSystemProviders(providers);
        }
        synchronized (this) {
            mSystemProvidersInstalled = true;
        }
        mConstants.start(mContext.getContentResolver());
        mCoreSettingsObserver = new CoreSettingsObserver(this);
        mFontScaleSettingObserver = new FontScaleSettingObserver();