From c12c1f1ddcec7ed2b26ab7c8075cb5ca45543501 Mon Sep 17 00:00:00 2001 From: James Mattis Date: Sat, 20 Feb 2021 14:40:51 -0800 Subject: [PATCH] Using defensive copy for default request remove Passing in a defensive copy for the default requests in ConnectivityService prior to updating that collection so as to not have issues when removing elements as part of the per-app preference update flow. Bug: 176494815 Bug: 178632672 Test: atest FrameworksNetTests atest FrameworksNetTests:com.android.server .ConnectivityServiceTest#testSetOemNetworkPreference ClearPreviousOemValues --iterations Change-Id: Ia683d5035dda2be35fd2f2b7ee038e806caab6f9 --- services/core/java/com/android/server/ConnectivityService.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index f54551e3f6..9d86f4eaa5 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -9033,7 +9033,8 @@ public class ConnectivityService extends IConnectivityManager.Stub private void updateDefaultNetworksForOemNetworkPreference( @NonNull final Set nris) { - handleRemoveNetworkRequests(mDefaultNetworkRequests); + // Pass in a defensive copy as this collection will be updated on remove. + handleRemoveNetworkRequests(new ArraySet<>(mDefaultNetworkRequests)); addPerAppDefaultNetworkRequests(nris); }