summaryrefslogtreecommitdiffstats
path: root/wifi/java/android/net/wifi/p2p
diff options
context:
space:
mode:
authorIrfan Sheriff <isheriff@google.com>2013-02-12 09:51:47 -0800
committerIrfan Sheriff <isheriff@google.com>2013-02-12 10:05:54 -0800
commit9dab7d670537eb6a954d8e933c1deade87dfd981 (patch)
treef56d9ccb10a2afd57d55929c6ca40fdec2fac1cf /wifi/java/android/net/wifi/p2p
parent080df3f38fc47f15ad321fff00689dcd07e1d075 (diff)
downloadframeworks_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/net/wifi/p2p')
-rw-r--r--wifi/java/android/net/wifi/p2p/WifiP2pService.java17
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;