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

Commit 57a767ff authored by Paul Jensen's avatar Paul Jensen
Browse files

Don't allow an uncreated Network to satsify requests.

This could happen when another Network changes its capabilities and
updateCapabilities() calls rematchAllNetworksAndRequests() which
calls rematchNetworkAndRequests() on all Networks, even those that
are uncreated.
Allowing uncreated Networks to satisfy requests can lead to bugs
where ConnectivityService instructs netd to perform actions
(e.g. set default Network) on uncreated Networks which netd doesn't
know about yet.

bug:18446301
Change-Id: I857262ac66d1d3af4c264ce128f0a4bee95655de
parent 1ca6af34
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -3973,7 +3973,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
    //                 another higher scoring network by another call to rematchNetworkAndRequests()
    //                 and this other call also lingered newNetwork.
    private void rematchNetworkAndRequests(NetworkAgentInfo newNetwork, boolean nascent) {
        if (!newNetwork.created) loge("ERROR: uncreated network being rematched.");
        if (!newNetwork.created) return;
        if (nascent && !newNetwork.validated) loge("ERROR: nascent network not validated.");
        boolean keep = newNetwork.isVPN();
        boolean isNewDefault = false;
@@ -4272,7 +4272,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
        final int oldScore = nai.getCurrentScore();
        nai.setCurrentScore(score);

        if (nai.created) rematchAllNetworksAndRequests(nai, oldScore);
        rematchAllNetworksAndRequests(nai, oldScore);

        sendUpdatedScoreToFactories(nai);
    }