From 57a767ff22cc141c90627b480b48cbda7c89d62b Mon Sep 17 00:00:00 2001 From: Paul Jensen Date: Wed, 19 Nov 2014 13:01:46 -0500 Subject: [PATCH] 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 --- .../core/java/com/android/server/ConnectivityService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 17889eae772a2..caf561e17b353 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -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); }