Update CS helper for clearing NetworkCapabilities UIDs.

NetworkCapabilities needs to have its UIDs cleared (UID ranges, owner
UID, and administrator UIDs) before it can be shared with apps via
ConnectivityDiagnosticsCallback invocations. The previous helper used
for clearing these values mutated the provided NetworkCapabilities. This
is updated to instead return a sanitized copy of the provided
NetworkCapabilities

Bug: 148942124
Test: atest FrameworksNetTests
Change-Id: I2431a6d273d0d73432919baf41b4f66397f4b7dc
This commit is contained in:
Cody Kesting
2020-03-05 22:13:31 -08:00
parent 2b1a61cf4b
commit b1cd3ebfea

View File

@@ -7879,8 +7879,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
@NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) { @NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) {
final NetworkAgentInfo nai = reportEvent.mNai; final NetworkAgentInfo nai = reportEvent.mNai;
final NetworkCapabilities networkCapabilities = final NetworkCapabilities networkCapabilities =
new NetworkCapabilities(nai.networkCapabilities); getNetworkCapabilitiesWithoutUids(nai.networkCapabilities);
clearNetworkCapabilitiesUids(networkCapabilities);
final ConnectivityReport report = final ConnectivityReport report =
new ConnectivityReport( new ConnectivityReport(
reportEvent.mNai.network, reportEvent.mNai.network,
@@ -7904,8 +7903,7 @@ public class ConnectivityService extends IConnectivityManager.Stub
@NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod, @NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod,
@NonNull PersistableBundle extras) { @NonNull PersistableBundle extras) {
final NetworkCapabilities networkCapabilities = final NetworkCapabilities networkCapabilities =
new NetworkCapabilities(nai.networkCapabilities); getNetworkCapabilitiesWithoutUids(nai.networkCapabilities);
clearNetworkCapabilitiesUids(networkCapabilities);
final DataStallReport report = final DataStallReport report =
new DataStallReport( new DataStallReport(
nai.network, nai.network,
@@ -7938,10 +7936,12 @@ public class ConnectivityService extends IConnectivityManager.Stub
} }
} }
private void clearNetworkCapabilitiesUids(@NonNull NetworkCapabilities nc) { private NetworkCapabilities getNetworkCapabilitiesWithoutUids(@NonNull NetworkCapabilities nc) {
nc.setUids(null); final NetworkCapabilities sanitized = new NetworkCapabilities(nc);
nc.setAdministratorUids(new int[0]); sanitized.setUids(null);
nc.setOwnerUid(Process.INVALID_UID); sanitized.setAdministratorUids(new int[0]);
sanitized.setOwnerUid(Process.INVALID_UID);
return sanitized;
} }
private List<IConnectivityDiagnosticsCallback> getMatchingPermissionedCallbacks( private List<IConnectivityDiagnosticsCallback> getMatchingPermissionedCallbacks(