diff --git a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java index 8b3102a063..ae0161dfcd 100644 --- a/Tethering/common/TetheringLib/src/android/net/TetheringManager.java +++ b/Tethering/common/TetheringLib/src/android/net/TetheringManager.java @@ -1379,6 +1379,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); @@ -1533,6 +1536,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 163fe24749..c11938e606 100644 --- a/Tethering/src/com/android/networkstack/tethering/Tethering.java +++ b/Tethering/src/com/android/networkstack/tethering/Tethering.java @@ -2397,9 +2397,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(); @@ -2437,9 +2434,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 a147a4a7aa..454cbf1e76 100644 --- a/Tethering/src/com/android/networkstack/tethering/TetheringService.java +++ b/Tethering/src/com/android/networkstack/tethering/TetheringService.java @@ -164,6 +164,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); @@ -176,6 +178,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);