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
This commit is contained in:
James Mattis
2021-02-20 14:40:51 -08:00
parent fb0919fb6f
commit c12c1f1ddc

View File

@@ -9033,7 +9033,8 @@ public class ConnectivityService extends IConnectivityManager.Stub
private void updateDefaultNetworksForOemNetworkPreference(
@NonNull final Set<NetworkRequestInfo> nris) {
handleRemoveNetworkRequests(mDefaultNetworkRequests);
// Pass in a defensive copy as this collection will be updated on remove.
handleRemoveNetworkRequests(new ArraySet<>(mDefaultNetworkRequests));
addPerAppDefaultNetworkRequests(nris);
}