diff --git a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java index 2963f87a36..e69f2ddeed 100644 --- a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java +++ b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java @@ -1353,6 +1353,9 @@ public class TetheringManager { @RequiresPermission(Manifest.permission.ACCESS_NETWORK_STATE) public void registerTetheringEventCallback(@NonNull Executor executor, @NonNull TetheringEventCallback callback) { + Objects.requireNonNull(executor); + Objects.requireNonNull(callback); + final String callerPkg = mContext.getOpPackageName(); Log.i(TAG, "registerTetheringEventCallback caller:" + callerPkg); @@ -1507,6 +1510,8 @@ public class TetheringManager { Manifest.permission.ACCESS_NETWORK_STATE }) public void unregisterTetheringEventCallback(@NonNull final TetheringEventCallback callback) { + Objects.requireNonNull(callback); + final String callerPkg = mContext.getOpPackageName(); Log.i(TAG, "unregisterTetheringEventCallback caller:" + callerPkg); diff --git a/Tethering/src/com/android/networkstack/tethering/Tethering.java b/Tethering/src/com/android/networkstack/tethering/Tethering.java index 0ff89d3118..4631262dd1 100644 --- a/Tethering/src/com/android/networkstack/tethering/Tethering.java +++ b/Tethering/src/com/android/networkstack/tethering/Tethering.java @@ -2400,9 +2400,6 @@ public class Tethering { hasCallingPermission(NETWORK_SETTINGS) || hasCallingPermission(PERMISSION_MAINLINE_NETWORK_STACK) || hasCallingPermission(NETWORK_STACK); - if (callback == null) { - throw new NullPointerException(); - } mHandler.post(() -> { mTetheringEventCallbacks.register(callback, new CallbackCookie(hasListPermission)); final TetheringCallbackStartedParcel parcel = new TetheringCallbackStartedParcel(); @@ -2440,9 +2437,6 @@ public class Tethering { /** Unregister tethering event callback */ void unregisterTetheringEventCallback(ITetheringEventCallback callback) { - if (callback == null) { - throw new NullPointerException(); - } mHandler.post(() -> { mTetheringEventCallbacks.unregister(callback); }); diff --git a/Tethering/src/com/android/networkstack/tethering/TetheringService.java b/Tethering/src/com/android/networkstack/tethering/TetheringService.java index 623f5023d1..93b350815e 100644 --- a/Tethering/src/com/android/networkstack/tethering/TetheringService.java +++ b/Tethering/src/com/android/networkstack/tethering/TetheringService.java @@ -163,6 +163,8 @@ public class TetheringService extends Service { @Override public void registerTetheringEventCallback(ITetheringEventCallback callback, String callerPkg) { + // Silently ignore call if the callback is null. This can only happen via reflection. + if (callback == null) return; try { if (!hasTetherAccessPermission()) { callback.onCallbackStopped(TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION); @@ -175,6 +177,8 @@ public class TetheringService extends Service { @Override public void unregisterTetheringEventCallback(ITetheringEventCallback callback, String callerPkg) { + // Silently ignore call if the callback is null. This can only happen via reflection. + if (callback == null) return; try { if (!hasTetherAccessPermission()) { callback.onCallbackStopped(TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION);