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 * @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. * 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.writeInt(mLinkDownBandwidthKbps);
dest.writeParcelable((Parcelable) mNetworkSpecifier, flags); dest.writeParcelable((Parcelable) mNetworkSpecifier, flags);
dest.writeInt(mSignalStrength); dest.writeInt(mSignalStrength);
dest.writeArraySet(new ArraySet<>(mUids)); dest.writeArraySet(mUids);
} }
public static final Creator<NetworkCapabilities> CREATOR = public static final Creator<NetworkCapabilities> CREATOR =