diff options
| -rw-r--r-- | services/core/java/com/android/server/ConnectivityService.java | 36 | ||||
| -rw-r--r-- | services/core/java/com/android/server/TestNetworkService.java | 41 |
2 files changed, 45 insertions, 32 deletions
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index ae0268f1d945..e3b34e8dc724 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -1712,16 +1712,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; } @@ -3906,8 +3907,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 { @@ -7800,10 +7805,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 655d8abf3e84..e8687e57a07b 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()); - } - - return new TestNetworkInterface(tunIntf, iface); - } catch (RemoteException e) { - throw e.rethrowFromSystemServer(); - } - }); + 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(); + } 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 |