Fix NullPointerException on NsdService

The NsdService will throw a NPE if a new client is registered
with a null INsdManagerCallback object. To avoid this, perform
a null check before registering a new client and throw an
IllegalArgumentException if the callback is null.

Bug: 293285797
Test: atest FrameworksNetTests
Change-Id: Id61e27873591031c3fe383879aee0d40eebc08b3
This commit is contained in:
Paul Hu
2023-08-09 16:05:20 +08:00
parent 8ba50ae30f
commit 101dbf5262
2 changed files with 19 additions and 2 deletions

View File

@@ -1585,6 +1585,20 @@ public class NsdServiceTest {
lockOrder.verify(mMulticastLock).release();
}
@Test
public void testNullINsdManagerCallback() {
final NsdService service = new NsdService(mContext, mHandler, CLEANUP_DELAY_MS, mDeps) {
@Override
public INsdServiceConnector connect(INsdManagerCallback baseCb,
boolean runNewMdnsBackend) {
// Pass null INsdManagerCallback
return super.connect(null /* cb */, runNewMdnsBackend);
}
};
assertThrows(IllegalArgumentException.class, () -> new NsdManager(mContext, service));
}
private void waitForIdle() {
HandlerUtils.waitForIdle(mHandler, TIMEOUT_MS);
}