Fix a bug where a NetworkAgent gets repeatedly torn down

mUids is not marshalled correctly when null so if the
NetworkAgent runs in another process and is not a VPN then
the system will see its allowed Uids as being the empty
list (= nobody can use this network) instead of a null
list (= everybody can use this network). This breaks
emulator networking.

Bug: 72436966
Test: runtests frameworks-net
Test: also manual testing, this does fix emulator networking
      and seems not to break phone networking
Cherry-pick of : Id2bbf3808e80b19cd055c832c11cf72372710942

Change-Id: I4b88d5eccbdea745a947d12635cd751e38632589
This commit is contained in:
Chalard Jean
2018-01-25 09:41:51 +09:00
parent f5082af9fa
commit 179b37dbf4

View File

@@ -892,7 +892,7 @@ public final class NetworkCapabilities implements Parcelable {
*
* @hide
*/
private Set<UidRange> mUids = null;
private ArraySet<UidRange> mUids = null;
/**
* Convenience method to set the UIDs this network applies to to a single UID.
@@ -1178,7 +1178,7 @@ public final class NetworkCapabilities implements Parcelable {
dest.writeInt(mLinkDownBandwidthKbps);
dest.writeParcelable((Parcelable) mNetworkSpecifier, flags);
dest.writeInt(mSignalStrength);
dest.writeArraySet(new ArraySet<>(mUids));
dest.writeArraySet(mUids);
}
public static final Creator<NetworkCapabilities> CREATOR =