Call clearCallingIdentity when calling registerNetworkProvider in TNS

The caller to create a TestNetworkService via
ConnectivityManager#startOrGetTestNetworkManager should have
passed the MANAGE_TEST_NETWORKS permission check and the caller
doesn't need to declare the permission to pass the permission
check of registerNetworkProvider. So call clearCallingIdentity
when calling registerNetworkProvider in TestNetworkService.

Bug: 181573283
Test: atest CtsNetTestCases:ConnectivityManagerTest#testRequestBackgroundNetwork
Change-Id: Ia28627dacf933d1937978ed9709b975c9a4660ce
This commit is contained in:
lucaslin
2021-03-15 10:57:51 +08:00
committed by Lucas Lin
parent d12480ed60
commit 10cb5421e4

View File

@@ -90,7 +90,12 @@ class TestNetworkService extends ITestNetworkManager.Stub {
mCm = mContext.getSystemService(ConnectivityManager.class);
mNetworkProvider = new NetworkProvider(mContext, mHandler.getLooper(),
TEST_NETWORK_PROVIDER_NAME);
mCm.registerNetworkProvider(mNetworkProvider);
final long token = Binder.clearCallingIdentity();
try {
mCm.registerNetworkProvider(mNetworkProvider);
} finally {
Binder.restoreCallingIdentity(token);
}
}
/**