From 85308a5a14e84ed78e2ef9b843f33fbe956c4961 Mon Sep 17 00:00:00 2001 From: Cody Kesting Date: Thu, 5 Mar 2020 22:13:31 -0800 Subject: [PATCH] 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 Merged-In: I2431a6d273d0d73432919baf41b4f66397f4b7dc (cherry picked from commit 45bbc4f6ac910a2ea87eb6b2197e34db50d3ada8) --- .../com/android/server/ConnectivityService.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 2e5a844c88..4ab035e7f4 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -7918,8 +7918,7 @@ public class ConnectivityService extends IConnectivityManager.Stub @NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) { final NetworkAgentInfo nai = reportEvent.mNai; final NetworkCapabilities networkCapabilities = - new NetworkCapabilities(nai.networkCapabilities); - clearNetworkCapabilitiesUids(networkCapabilities); + getNetworkCapabilitiesWithoutUids(nai.networkCapabilities); final ConnectivityReport report = new ConnectivityReport( reportEvent.mNai.network, @@ -7943,8 +7942,7 @@ public class ConnectivityService extends IConnectivityManager.Stub @NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod, @NonNull PersistableBundle extras) { final NetworkCapabilities networkCapabilities = - new NetworkCapabilities(nai.networkCapabilities); - clearNetworkCapabilitiesUids(networkCapabilities); + getNetworkCapabilitiesWithoutUids(nai.networkCapabilities); final DataStallReport report = new DataStallReport( nai.network, @@ -7977,10 +7975,12 @@ public class ConnectivityService extends IConnectivityManager.Stub } } - private void clearNetworkCapabilitiesUids(@NonNull NetworkCapabilities nc) { - nc.setUids(null); - nc.setAdministratorUids(new int[0]); - nc.setOwnerUid(Process.INVALID_UID); + private NetworkCapabilities getNetworkCapabilitiesWithoutUids(@NonNull NetworkCapabilities nc) { + final NetworkCapabilities sanitized = new NetworkCapabilities(nc); + sanitized.setUids(null); + sanitized.setAdministratorUids(new int[0]); + sanitized.setOwnerUid(Process.INVALID_UID); + return sanitized; } private List getMatchingPermissionedCallbacks(