Merge "Fix NullPointerException on NsdService" into main

This commit is contained in:
Paul Hu
2023-08-10 09:03:41 +00:00
committed by Gerrit Code Review
2 changed files with 19 additions and 2 deletions

View File

@@ -1920,11 +1920,14 @@ public class NsdService extends INsdManager.Stub {
@Override
public INsdServiceConnector connect(INsdManagerCallback cb, boolean useJavaBackend) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.INTERNET, "NsdService");
final int uid = mDeps.getCallingUid();
if (cb == null) {
throw new IllegalArgumentException("Unknown client callback from uid=" + uid);
}
if (DBG) Log.d(TAG, "New client connect. useJavaBackend=" + useJavaBackend);
final INsdServiceConnector connector = new NsdServiceConnector();
mNsdStateMachine.sendMessage(mNsdStateMachine.obtainMessage(NsdManager.REGISTER_CLIENT,
new ConnectorArgs((NsdServiceConnector) connector, cb, useJavaBackend,
mDeps.getCallingUid())));
new ConnectorArgs((NsdServiceConnector) connector, cb, useJavaBackend, uid)));
return connector;
}

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);
}