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

Commit 2cd918a6 authored by Amin Shaikh's avatar Amin Shaikh
Browse files

Fix NetworkScorerAppManager#isCallerActiveScorer.

The current implementation checks whether the caller's uid has the
SCORE_NETWORKS permission instead of checking the passed in callingUid. I
removed this check entirely because the getActiveScorer method already checks
whether the scorer's package has the SCORE_NETWORKS permission. There is no way
callingUid can equal the active scoring package's uid without also having the
SCORE_NETWORKS permission.

Bug: 34107721
Test: runtest --path core/tests/coretests/src/android/net/NetworkScorerAppManagerTest.java
Change-Id: Ifd427792169837c84a10a76b208c76137db06ae9
parent a54d76a8
Loading
Loading
Loading
Loading
+1 −7
Original line number Diff line number Diff line
@@ -231,13 +231,7 @@ public class NetworkScorerAppManager {
        if (defaultApp == null) {
            return false;
        }
        if (callingUid != defaultApp.packageUid) {
            return false;
        }
        // To be extra safe, ensure the caller holds the SCORE_NETWORKS permission. It always
        // should, since it couldn't become the active scorer otherwise, but this can't hurt.
        return mContext.checkCallingPermission(Manifest.permission.SCORE_NETWORKS) ==
                PackageManager.PERMISSION_GRANTED;
        return callingUid == defaultApp.packageUid;
    }

    private boolean isNetworkRecommendationsDisabled() {
+19 −0
Original line number Diff line number Diff line
@@ -169,6 +169,25 @@ public class NetworkScorerAppManagerTest extends InstrumentationTestCase {
        assertNull(activeScorer);
    }

    public void testIsCallerActiveScorer_providerNotAvailable() throws Exception {
        ContentResolver cr = mTargetContext.getContentResolver();
        Settings.Global.putInt(cr, Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, 1);

        assertFalse(mNetworkScorerAppManager.isCallerActiveScorer(924));
    }

    public void testIsCallerActiveScorer_providerAvailable() throws Exception {
        setNetworkRecommendationPackageNames("package1");
        mockScoreNetworksGranted("package1");
        mockRecommendationServiceAvailable("package1", 924 /* packageUid */);

        ContentResolver cr = mTargetContext.getContentResolver();
        Settings.Global.putInt(cr, Settings.Global.NETWORK_RECOMMENDATIONS_ENABLED, 1);

        assertTrue(mNetworkScorerAppManager.isCallerActiveScorer(924));
        assertFalse(mNetworkScorerAppManager.isCallerActiveScorer(925));
    }

    private void setNetworkRecommendationPackageNames(String... names) {
        if (names == null) {
            names = new String[0];