From 10cb5421e47db62d69c7965da9fbc4f87e610a02 Mon Sep 17 00:00:00 2001 From: lucaslin Date: Mon, 15 Mar 2021 10:57:51 +0800 Subject: [PATCH] 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 --- .../core/java/com/android/server/TestNetworkService.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/services/core/java/com/android/server/TestNetworkService.java b/services/core/java/com/android/server/TestNetworkService.java index ee610671ff..f5662772f5 100644 --- a/services/core/java/com/android/server/TestNetworkService.java +++ b/services/core/java/com/android/server/TestNetworkService.java @@ -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); + } } /**