From 75ff7022cb3ff4d9e91d2e794623247d7bf3f5ee Mon Sep 17 00:00:00 2001 From: lucaslin Date: Thu, 17 Dec 2020 04:14:35 +0800 Subject: [PATCH] Use [clear|restore]CallingIdentity instead of withCleanCallingIdentity ConnectivityService is going to be a part of mainline module, to prevent using @hide method - withCleanCallingIdentity(), use clearCallingIdentity() & restoreCallingIdentity() instead. Bug: 170598012 Test: FrameworksNetTests & CtsNetTestCasesLatestSdk & TetheringIntegrationTests Change-Id: I20f45af4a4044844a171b09269981451a9d7cdb4 --- .../android/server/ConnectivityService.java | 36 ++++++++++------- .../android/server/TestNetworkService.java | 39 +++++++++++-------- 2 files changed, 44 insertions(+), 31 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index 2c765bd896..3135056383 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -1705,16 +1705,17 @@ public class ConnectivityService extends IConnectivityManager.Stub return newNc; } - Binder.withCleanCallingIdentity( - () -> { - if (!mLocationPermissionChecker.checkLocationPermission( - callerPkgName, null /* featureId */, callerUid, null /* message */)) { - // Caller does not have the requisite location permissions. Reset the - // owner's UID in the NetworkCapabilities. - newNc.setOwnerUid(INVALID_UID); - } - } - ); + final long token = Binder.clearCallingIdentity(); + try { + if (!mLocationPermissionChecker.checkLocationPermission( + callerPkgName, null /* featureId */, callerUid, null /* message */)) { + // Caller does not have the requisite location permissions. Reset the + // owner's UID in the NetworkCapabilities. + newNc.setOwnerUid(INVALID_UID); + } + } finally { + Binder.restoreCallingIdentity(token); + } return newNc; } @@ -3871,8 +3872,12 @@ public class ConnectivityService extends IConnectivityManager.Stub new CaptivePortal(new CaptivePortalImpl(network).asBinder())); appIntent.setFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT | Intent.FLAG_ACTIVITY_NEW_TASK); - Binder.withCleanCallingIdentity(() -> - mContext.startActivityAsUser(appIntent, UserHandle.CURRENT)); + final long token = Binder.clearCallingIdentity(); + try { + mContext.startActivityAsUser(appIntent, UserHandle.CURRENT); + } finally { + Binder.restoreCallingIdentity(token); + } } private class CaptivePortalImpl extends ICaptivePortal.Stub { @@ -7759,10 +7764,13 @@ public class ConnectivityService extends IConnectivityManager.Stub final int userId = UserHandle.getCallingUserId(); - Binder.withCleanCallingIdentity(() -> { + final long token = Binder.clearCallingIdentity(); + try { final IpMemoryStore ipMemoryStore = IpMemoryStore.getMemoryStore(mContext); ipMemoryStore.factoryReset(); - }); + } finally { + Binder.restoreCallingIdentity(token); + } // Turn airplane mode off setAirplaneMode(false); diff --git a/services/core/java/com/android/server/TestNetworkService.java b/services/core/java/com/android/server/TestNetworkService.java index 655d8abf3e..e8687e57a0 100644 --- a/services/core/java/com/android/server/TestNetworkService.java +++ b/services/core/java/com/android/server/TestNetworkService.java @@ -107,23 +107,23 @@ class TestNetworkService extends ITestNetworkManager.Stub { String ifacePrefix = isTun ? TEST_TUN_PREFIX : TEST_TAP_PREFIX; String iface = ifacePrefix + sTestTunIndex.getAndIncrement(); - return Binder.withCleanCallingIdentity( - () -> { - try { - ParcelFileDescriptor tunIntf = - ParcelFileDescriptor.adoptFd(jniCreateTunTap(isTun, iface)); - for (LinkAddress addr : linkAddrs) { - mNetd.interfaceAddAddress( - iface, - addr.getAddress().getHostAddress(), - addr.getPrefixLength()); - } + final long token = Binder.clearCallingIdentity(); + try { + ParcelFileDescriptor tunIntf = + ParcelFileDescriptor.adoptFd(jniCreateTunTap(isTun, iface)); + for (LinkAddress addr : linkAddrs) { + mNetd.interfaceAddAddress( + iface, + addr.getAddress().getHostAddress(), + addr.getPrefixLength()); + } - return new TestNetworkInterface(tunIntf, iface); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - }); + return new TestNetworkInterface(tunIntf, iface); + } catch (RemoteException e) { + throw e.rethrowFromSystemServer(); + } finally { + Binder.restoreCallingIdentity(token); + } } /** @@ -317,7 +317,12 @@ class TestNetworkService extends ITestNetworkManager.Stub { try { // This requires NETWORK_STACK privileges. - Binder.withCleanCallingIdentity(() -> mNMS.setInterfaceUp(iface)); + final long token = Binder.clearCallingIdentity(); + try { + mNMS.setInterfaceUp(iface); + } finally { + Binder.restoreCallingIdentity(token); + } // Synchronize all accesses to mTestNetworkTracker to prevent the case where: // 1. TestNetworkAgent successfully binds to death of binder