From 33d8e5cc07531c566c0b237fea3a067638147d3c Mon Sep 17 00:00:00 2001 From: Erik Kline Date: Mon, 15 Jan 2018 17:05:07 +0900 Subject: [PATCH] change NMS removeNetwork to netd binder variant Also: require NETWORK_STACK instead of CONNECTIVITY_INTERNAL. Bug: 34953048 Bug: 64133961 Test: as follows - built - flashed - booted - runtest frameworks-net Change-Id: I26f07f51a8a2f4a8bb43a276da7c5e66c355c848 --- .../core/java/com/android/server/ConnectivityService.java | 2 ++ .../java/com/android/server/NetworkManagementService.java | 12 ++++++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java index f34730c084fc..b2acb1ca3b50 100644 --- a/services/core/java/com/android/server/ConnectivityService.java +++ b/services/core/java/com/android/server/ConnectivityService.java @@ -2472,6 +2472,7 @@ public class ConnectivityService extends IConnectivityManager.Stub private void handleRemoveNetworkRequest(final NetworkRequestInfo nri) { nri.unlinkDeathRecipient(); mNetworkRequests.remove(nri.request); + synchronized (mUidToNetworkRequestCount) { int requests = mUidToNetworkRequestCount.get(nri.mUid, 0); if (requests < 1) { @@ -2484,6 +2485,7 @@ public class ConnectivityService extends IConnectivityManager.Stub mUidToNetworkRequestCount.put(nri.mUid, requests - 1); } } + mNetworkRequestInfoLogs.log("RELEASE " + nri); if (nri.request.isRequest()) { boolean wasKept = false; diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java index 40e6d2645b69..8f646e75862c 100644 --- a/services/core/java/com/android/server/NetworkManagementService.java +++ b/services/core/java/com/android/server/NetworkManagementService.java @@ -2508,12 +2508,16 @@ public class NetworkManagementService extends INetworkManagementService.Stub @Override public void removeNetwork(int netId) { - mContext.enforceCallingOrSelfPermission(CONNECTIVITY_INTERNAL, TAG); + mContext.enforceCallingOrSelfPermission(NETWORK_STACK, TAG); try { - mConnector.execute("network", "destroy", netId); - } catch (NativeDaemonConnectorException e) { - throw e.rethrowAsParcelableException(); + mNetdService.networkDestroy(netId); + } catch (ServiceSpecificException e) { + Log.w(TAG, "removeNetwork(" + netId + "): ", e); + throw e; + } catch (RemoteException e) { + Log.w(TAG, "removeNetwork(" + netId + "): ", e); + throw e.rethrowAsRuntimeException(); } } -- 2.11.0