diff options
| author | 2020-12-17 04:14:35 +0800 | |
|---|---|---|
| committer | 2020-12-17 01:28:39 +0000 | |
| commit | cab6c9bc8b54f51a6f0d41ae5abe8128e15b66f7 (patch) | |
| tree | 54ebf0bd979279b4e5bbc2e0f1723aec510463bb | |
| parent | a2c355cc18054ec03cabdfa9ed5e151f7c368816 (diff) | |
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
| -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 2c765bd896fa..3135056383c1 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 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 |