From 256be78f7d00c619cca9ed5a550b04fabd4cc48e Mon Sep 17 00:00:00 2001 From: Erik Kline Date: Sat, 29 Apr 2017 13:20:04 +0900 Subject: Use ConnectivityService's NETWORK_STACK permission for SoftAp operations Test: as follows - built - flashed - booted - "runtest frameworks-net" passes Bug: 37647880 Bug: 37750597 Change-Id: I4fb603b7491013bc13b0c08a785eae6cd37337b9 --- .../com/android/server/connectivity/Tethering.java | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/services/core/java/com/android/server/connectivity/Tethering.java b/services/core/java/com/android/server/connectivity/Tethering.java index b0ed2b8966a0..9edc35e20564 100644 --- a/services/core/java/com/android/server/connectivity/Tethering.java +++ b/services/core/java/com/android/server/connectivity/Tethering.java @@ -413,15 +413,21 @@ public class Tethering extends BaseNetworkObserver implements IControlsTethering } private int setWifiTethering(final boolean enable) { - synchronized (mPublicSync) { - mWifiTetherRequested = enable; - final WifiManager wifiManager = getWifiManager(); - if ((enable && wifiManager.startSoftAp(null /* use existing wifi config */)) || - (!enable && wifiManager.stopSoftAp())) { - return ConnectivityManager.TETHER_ERROR_NO_ERROR; + int rval = ConnectivityManager.TETHER_ERROR_MASTER_ERROR; + final long ident = Binder.clearCallingIdentity(); + try { + synchronized (mPublicSync) { + mWifiTetherRequested = enable; + final WifiManager mgr = getWifiManager(); + if ((enable && mgr.startSoftAp(null /* use existing wifi config */)) || + (!enable && mgr.stopSoftAp())) { + rval = ConnectivityManager.TETHER_ERROR_NO_ERROR; + } } - return ConnectivityManager.TETHER_ERROR_MASTER_ERROR; + } finally { + Binder.restoreCallingIdentity(ident); } + return rval; } private void setBluetoothTethering(final boolean enable, final ResultReceiver receiver) { -- cgit v1.2.3-59-g8ed1b