From 262b462786a11cf693c62dd1a53e183c6178b1cd 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 17889eae77..caf561e17b 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); }