diff options
author | Irfan Sheriff <isheriff@google.com> | 2013-02-12 09:51:47 -0800 |
---|---|---|
committer | Irfan Sheriff <isheriff@google.com> | 2013-02-12 10:05:54 -0800 |
commit | 9dab7d670537eb6a954d8e933c1deade87dfd981 (patch) | |
tree | f56d9ccb10a2afd57d55929c6ca40fdec2fac1cf /wifi/java/android | |
parent | 080df3f38fc47f15ad321fff00689dcd07e1d075 (diff) | |
download | frameworks_base-9dab7d670537eb6a954d8e933c1deade87dfd981.zip frameworks_base-9dab7d670537eb6a954d8e933c1deade87dfd981.tar.gz frameworks_base-9dab7d670537eb6a954d8e933c1deade87dfd981.tar.bz2 |
Fix NPE
Supplicant sometimes reports 00:00:00:00:00:00 as group owner address causing
an NPE.
Avoid updating from peer list and let connection continue since group owner
address is not essential for data transfer to continue.
Bug: 8158711
Change-Id: I06ce88d7fb426fec4965087968f738dd2a7a7799
Diffstat (limited to 'wifi/java/android')
-rw-r--r-- | wifi/java/android/net/wifi/p2p/WifiP2pService.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pService.java b/wifi/java/android/net/wifi/p2p/WifiP2pService.java index 77604a4..1589fec 100644 --- a/wifi/java/android/net/wifi/p2p/WifiP2pService.java +++ b/wifi/java/android/net/wifi/p2p/WifiP2pService.java @@ -1332,10 +1332,19 @@ public class WifiP2pService extends IWifiP2pManager.Stub { P2pStateMachine.this, mGroup.getInterface()); mDhcpStateMachine.sendMessage(DhcpStateMachine.CMD_START_DHCP); WifiP2pDevice groupOwner = mGroup.getOwner(); - /* update group owner details with the ones found at discovery */ - groupOwner.updateSupplicantDetails(mPeers.get(groupOwner.deviceAddress)); - mPeers.updateStatus(groupOwner.deviceAddress, WifiP2pDevice.CONNECTED); - sendPeersChangedBroadcast(); + WifiP2pDevice peer = mPeers.get(groupOwner.deviceAddress); + if (peer != null) { + // update group owner details with peer details found at discovery + groupOwner.updateSupplicantDetails(peer); + mPeers.updateStatus(groupOwner.deviceAddress, WifiP2pDevice.CONNECTED); + sendPeersChangedBroadcast(); + } else { + // A supplicant bug can lead to reporting an invalid + // group owner address (all zeroes) at times. Avoid a + // crash, but continue group creation since it is not + // essential. + logw("Unknown group owner " + groupOwner); + } } transitionTo(mGroupCreatedState); break; |