diff options
author | Rebecca Silberstein <silberst@google.com> | 2017-04-15 23:03:59 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2017-04-15 23:03:59 +0000 |
commit | ca71a341baaf38de49d0a6bacdc9a7f1a65db598 (patch) | |
tree | df95508feb037bb37fd12491afec682fc911cfbb /service | |
parent | 11df4062d7a5a7ed192a0de8f7fd19817048e9b1 (diff) | |
parent | 4f3b0d84dfc064b7cb40713007bf606c3969a743 (diff) |
Merge changes I11475732,I8de27f2b am: ff62ee9239 am: e97aa5d43d am: 4eca1d9357
am: 4f3b0d84df
Change-Id: I81078e36b5d5bd73cf571473bcbe1192246c85aa
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/WifiServiceImpl.java | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/service/java/com/android/server/wifi/WifiServiceImpl.java b/service/java/com/android/server/wifi/WifiServiceImpl.java index c3e80705d..c6166cdb2 100644 --- a/service/java/com/android/server/wifi/WifiServiceImpl.java +++ b/service/java/com/android/server/wifi/WifiServiceImpl.java @@ -122,6 +122,10 @@ public class WifiServiceImpl extends IWifiManager.Stub { private static final boolean DBG = true; private static final boolean VDBG = false; + // Package names for Settings, QuickSettings and QuickQuickSettings + private static final String SYSUI_PACKAGE_NAME = "com.android.systemui"; + private static final String SETTINGS_PACKAGE_NAME = "com.android.settings"; + // Dumpsys argument to enable/disable disconnect on IP reachability failures. private static final String DUMP_ARG_SET_IPREACH_DISCONNECT = "set-ipreach-disconnect"; private static final String DUMP_ARG_SET_IPREACH_DISCONNECT_ENABLED = "enabled"; @@ -590,8 +594,20 @@ public class WifiServiceImpl extends IWifiManager.Stub { throws RemoteException { enforceChangePermission(); Slog.d(TAG, "setWifiEnabled: " + enable + " pid=" + Binder.getCallingPid() - + ", uid=" + Binder.getCallingUid()); - mLog.trace("setWifiEnabled uid=% enable=%").c(Binder.getCallingUid()).c(enable).flush(); + + ", uid=" + Binder.getCallingUid() + ", package=" + packageName); + mLog.trace("setWifiEnabled package=% uid=% enable=%").c(packageName) + .c(Binder.getCallingUid()).c(enable).flush(); + + // If SoftAp is enabled, only Settings is allowed to toggle wifi + boolean apEnabled = + mWifiStateMachine.syncGetWifiApState() != WifiManager.WIFI_AP_STATE_DISABLED; + boolean isFromSettings = + packageName.equals(SYSUI_PACKAGE_NAME) || packageName.equals(SETTINGS_PACKAGE_NAME); + if (apEnabled && !isFromSettings) { + mLog.trace("setWifiEnabled SoftAp not disabled: only Settings can enable wifi").flush(); + return false; + } + /* * Caller might not have WRITE_SECURE_SETTINGS, * only CHANGE_WIFI_STATE is enforced @@ -663,7 +679,7 @@ public class WifiServiceImpl extends IWifiManager.Stub { } // null wifiConfig is a meaningful input for CMD_SET_AP if (wifiConfig == null || isValid(wifiConfig)) { - mWifiController.obtainMessage(CMD_SET_AP, enabled ? 1 : 0, 0, wifiConfig).sendToTarget(); + mWifiController.sendMessage(CMD_SET_AP, enabled ? 1 : 0, 0, wifiConfig); } else { Slog.e(TAG, "Invalid WifiConfiguration"); } |