Fix null pointer exception due to no device mac address
When legacy clients connect to P2P GO, there won't be a
P2P device address in AP-STA-CONNECTED/AP-STA-DISCONNECTED event.
So fill the p2p device address in AP-STA-CONNECTED and AP-STA-DISCONNECTED
events to framework as {0, 0, 0, 0, 0, 0};
Bug: 310969135
Bug: 291202830
Test: Setup P2P auto GO
Connect from a legacy STA to GO
Change-Id: I10e5fb023294d65318ab74de6546eb736dd72258
diff --git a/wpa_supplicant/aidl/aidl_manager.cpp b/wpa_supplicant/aidl/aidl_manager.cpp
index add0ef7..e760a71 100644
--- a/wpa_supplicant/aidl/aidl_manager.cpp
+++ b/wpa_supplicant/aidl/aidl_manager.cpp
@@ -1620,8 +1620,10 @@
P2pPeerClientJoinedEventParams params;
params.groupInterfaceName = misc_utils::charBufToString(wpa_group_s->ifname);
params.clientInterfaceAddress = macAddrToArray(sta);
- params.clientDeviceAddress = macAddrToArray(p2p_dev_addr);
+ params.clientDeviceAddress = p2p_dev_addr ?
+ macAddrToArray(p2p_dev_addr) : macAddrToArray(kZeroBssid.data());
params.clientIpAddress = aidl_ip;
+
callWithEachP2pIfaceCallback(
misc_utils::charBufToString(wpa_s->ifname),
std::bind(
@@ -1641,7 +1643,9 @@
P2pPeerClientDisconnectedEventParams params;
params.groupInterfaceName = misc_utils::charBufToString(wpa_group_s->ifname);
params.clientInterfaceAddress = macAddrToArray(sta);
- params.clientDeviceAddress = macAddrToArray(p2p_dev_addr);
+ params.clientDeviceAddress = p2p_dev_addr ?
+ macAddrToArray(p2p_dev_addr) : macAddrToArray(kZeroBssid.data());
+
callWithEachP2pIfaceCallback(
misc_utils::charBufToString(wpa_s->ifname),
std::bind(