Merge "Prevent NPEs when registering/unregistering ConnDiags CBs."

This commit is contained in:
Benedict Wong
2021-08-12 20:35:39 +00:00
committed by Gerrit Code Review
2 changed files with 56 additions and 0 deletions

View File

@@ -9525,6 +9525,10 @@ public class ConnectivityService extends IConnectivityManager.Stub
@NonNull IConnectivityDiagnosticsCallback callback, @NonNull IConnectivityDiagnosticsCallback callback,
@NonNull NetworkRequest request, @NonNull NetworkRequest request,
@NonNull String callingPackageName) { @NonNull String callingPackageName) {
Objects.requireNonNull(callback, "callback must not be null");
Objects.requireNonNull(request, "request must not be null");
Objects.requireNonNull(callingPackageName, "callingPackageName must not be null");
if (request.legacyType != TYPE_NONE) { if (request.legacyType != TYPE_NONE) {
throw new IllegalArgumentException("ConnectivityManager.TYPE_* are deprecated." throw new IllegalArgumentException("ConnectivityManager.TYPE_* are deprecated."
+ " Please use NetworkCapabilities instead."); + " Please use NetworkCapabilities instead.");
@@ -9573,6 +9577,9 @@ public class ConnectivityService extends IConnectivityManager.Stub
@Override @Override
public void simulateDataStall(int detectionMethod, long timestampMillis, public void simulateDataStall(int detectionMethod, long timestampMillis,
@NonNull Network network, @NonNull PersistableBundle extras) { @NonNull Network network, @NonNull PersistableBundle extras) {
Objects.requireNonNull(network, "network must not be null");
Objects.requireNonNull(extras, "extras must not be null");
enforceAnyPermissionOf(android.Manifest.permission.MANAGE_TEST_NETWORKS, enforceAnyPermissionOf(android.Manifest.permission.MANAGE_TEST_NETWORKS,
android.Manifest.permission.NETWORK_STACK); android.Manifest.permission.NETWORK_STACK);
final NetworkCapabilities nc = getNetworkCapabilitiesInternal(network); final NetworkCapabilities nc = getNetworkCapabilitiesInternal(network);

View File

@@ -204,6 +204,7 @@ import android.content.res.Resources;
import android.location.LocationManager; import android.location.LocationManager;
import android.net.CaptivePortalData; import android.net.CaptivePortalData;
import android.net.ConnectionInfo; import android.net.ConnectionInfo;
import android.net.ConnectivityDiagnosticsManager.DataStallReport;
import android.net.ConnectivityManager; import android.net.ConnectivityManager;
import android.net.ConnectivityManager.NetworkCallback; import android.net.ConnectivityManager.NetworkCallback;
import android.net.ConnectivityManager.PacketKeepalive; import android.net.ConnectivityManager.PacketKeepalive;
@@ -285,6 +286,7 @@ import android.os.Messenger;
import android.os.Parcel; import android.os.Parcel;
import android.os.ParcelFileDescriptor; import android.os.ParcelFileDescriptor;
import android.os.Parcelable; import android.os.Parcelable;
import android.os.PersistableBundle;
import android.os.Process; import android.os.Process;
import android.os.RemoteException; import android.os.RemoteException;
import android.os.ServiceSpecificException; import android.os.ServiceSpecificException;
@@ -10126,6 +10128,35 @@ public class ConnectivityServiceTest {
assertTrue(mService.mConnectivityDiagnosticsCallbacks.containsKey(mIBinder)); assertTrue(mService.mConnectivityDiagnosticsCallbacks.containsKey(mIBinder));
} }
@Test(expected = NullPointerException.class)
public void testRegisterConnectivityDiagnosticsCallbackNullCallback() {
mService.registerConnectivityDiagnosticsCallback(
null /* callback */,
new NetworkRequest.Builder().build(),
mContext.getPackageName());
}
@Test(expected = NullPointerException.class)
public void testRegisterConnectivityDiagnosticsCallbackNullNetworkRequest() {
mService.registerConnectivityDiagnosticsCallback(
mConnectivityDiagnosticsCallback,
null /* request */,
mContext.getPackageName());
}
@Test(expected = NullPointerException.class)
public void testRegisterConnectivityDiagnosticsCallbackNullPackageName() {
mService.registerConnectivityDiagnosticsCallback(
mConnectivityDiagnosticsCallback,
new NetworkRequest.Builder().build(),
null /* callingPackageName */);
}
@Test(expected = NullPointerException.class)
public void testUnregisterConnectivityDiagnosticsCallbackNullPackageName() {
mService.unregisterConnectivityDiagnosticsCallback(null /* callback */);
}
public NetworkAgentInfo fakeMobileNai(NetworkCapabilities nc) { public NetworkAgentInfo fakeMobileNai(NetworkCapabilities nc) {
final NetworkCapabilities cellNc = new NetworkCapabilities.Builder(nc) final NetworkCapabilities cellNc = new NetworkCapabilities.Builder(nc)
.addTransportType(TRANSPORT_CELLULAR).build(); .addTransportType(TRANSPORT_CELLULAR).build();
@@ -10436,6 +10467,24 @@ public class ConnectivityServiceTest {
areConnDiagCapsRedacted(report.getNetworkCapabilities()))); areConnDiagCapsRedacted(report.getNetworkCapabilities())));
} }
@Test(expected = NullPointerException.class)
public void testSimulateDataStallNullNetwork() {
mService.simulateDataStall(
DataStallReport.DETECTION_METHOD_DNS_EVENTS,
0L /* timestampMillis */,
null /* network */,
new PersistableBundle());
}
@Test(expected = NullPointerException.class)
public void testSimulateDataStallNullPersistableBundle() {
mService.simulateDataStall(
DataStallReport.DETECTION_METHOD_DNS_EVENTS,
0L /* timestampMillis */,
mock(Network.class),
null /* extras */);
}
@Test @Test
public void testRouteAddDeleteUpdate() throws Exception { public void testRouteAddDeleteUpdate() throws Exception {
final NetworkRequest request = new NetworkRequest.Builder().build(); final NetworkRequest request = new NetworkRequest.Builder().build();