diff options
author | Vinit Deshpande <vinitd@google.com> | 2015-01-09 11:10:52 -0800 |
---|---|---|
committer | Vinit Deshpande <vinitd@google.com> | 2015-01-09 11:10:52 -0800 |
commit | 537324a497615d07b67ba4582e9aaababd77afd6 (patch) | |
tree | 1b56608bcc4ccf9074fb33cfc069c3dc8da3c81b /service | |
parent | 2c9b6297f3cd74780a084634320d03a413a3b779 (diff) | |
download | android_frameworks_opt_net_wifi-537324a497615d07b67ba4582e9aaababd77afd6.tar.gz android_frameworks_opt_net_wifi-537324a497615d07b67ba4582e9aaababd77afd6.tar.bz2 android_frameworks_opt_net_wifi-537324a497615d07b67ba4582e9aaababd77afd6.zip |
Fix an NPE in WifiConfigStore
Disabling an invalid configuration causes Wifi service
to crash. This change gaurds against bad API call.
Bug: 18904771
Change-Id: I8d853b754cbd4163c17f3d53bf81dc7625c95466
Diffstat (limited to 'service')
-rw-r--r-- | service/java/com/android/server/wifi/WifiConfigStore.java | 22 |
1 files changed, 12 insertions, 10 deletions
diff --git a/service/java/com/android/server/wifi/WifiConfigStore.java b/service/java/com/android/server/wifi/WifiConfigStore.java index ab29bcfc2..f347d56d7 100644 --- a/service/java/com/android/server/wifi/WifiConfigStore.java +++ b/service/java/com/android/server/wifi/WifiConfigStore.java @@ -1219,17 +1219,19 @@ public class WifiConfigStore extends IpConfigStore { /* Only change the reason if the network was not previously disabled /* and the reason is not DISABLED_BY_WIFI_MANAGER, that is, if a 3rd party * set its configuration as disabled, then leave it disabled */ - if (config != null && config.status != Status.DISABLED + if (config != null) { + if (config.status != Status.DISABLED && config.disableReason != WifiConfiguration.DISABLED_BY_WIFI_MANAGER) { - config.status = Status.DISABLED; - config.disableReason = reason; - network = config; - } - if (reason == WifiConfiguration.DISABLED_BY_WIFI_MANAGER) { - // Make sure autojoin wont reenable this configuration without further user - // intervention - config.status = Status.DISABLED; - config.autoJoinStatus = WifiConfiguration.AUTO_JOIN_DISABLED_USER_ACTION; + config.status = Status.DISABLED; + config.disableReason = reason; + network = config; + } + if (reason == WifiConfiguration.DISABLED_BY_WIFI_MANAGER) { + // Make sure autojoin wont reenable this configuration without further user + // intervention + config.status = Status.DISABLED; + config.autoJoinStatus = WifiConfiguration.AUTO_JOIN_DISABLED_USER_ACTION; + } } if (network != null) { sendConfiguredNetworksChangedBroadcast(network, |