P2P: Fix ApSta auth/death with null p2p_dev_add
Fixed notifyApStaAuthorized/Deauthorized SupplicantP2pIfaceCallbacks not
being sent if they have a null p2p_dev_addr. Callback now sends all
zeros for the p2p_dev_addr if it's null.
Bug: 37961262
Test: Manual verification with LINKS app
Change-Id: I53f90a5e88ba47772b8b9fa30e93561440626775
diff --git a/wpa_supplicant/hidl/hidl.cpp b/wpa_supplicant/hidl/hidl.cpp
index 1416799..e5f5303 100644
--- a/wpa_supplicant/hidl/hidl.cpp
+++ b/wpa_supplicant/hidl/hidl.cpp
@@ -589,7 +589,7 @@
void wpas_hidl_notify_ap_sta_authorized(
struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
{
- if (!wpa_s || !sta || !p2p_dev_addr)
+ if (!wpa_s || !sta)
return;
wpa_printf(
@@ -607,7 +607,7 @@
void wpas_hidl_notify_ap_sta_deauthorized(
struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
{
- if (!wpa_s || !sta || !p2p_dev_addr)
+ if (!wpa_s || !sta)
return;
wpa_printf(
diff --git a/wpa_supplicant/hidl/hidl_manager.cpp b/wpa_supplicant/hidl/hidl_manager.cpp
index 15f4111..72b53a4 100644
--- a/wpa_supplicant/hidl/hidl_manager.cpp
+++ b/wpa_supplicant/hidl/hidl_manager.cpp
@@ -30,7 +30,7 @@
constexpr size_t kGsmRandLenBytes = GSM_RAND_LEN;
constexpr size_t kUmtsRandLenBytes = EAP_AKA_RAND_LEN;
constexpr size_t kUmtsAutnLenBytes = EAP_AKA_AUTN_LEN;
-
+constexpr u8 kZeroBssid[6] = {0, 0, 0, 0, 0, 0};
/**
* Check if the provided |wpa_supplicant| structure represents a P2P iface or
* not.
@@ -1323,22 +1323,21 @@
void HidlManager::notifyApStaAuthorized(
struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
{
- if (!wpa_s || !wpa_s->parent || !sta || !p2p_dev_addr)
+ if (!wpa_s || !wpa_s->parent || !sta)
return;
if (p2p_iface_object_map_.find(wpa_s->parent->ifname) ==
p2p_iface_object_map_.end())
return;
-
callWithEachP2pIfaceCallback(
wpa_s->parent->ifname, std::bind(
&ISupplicantP2pIfaceCallback::onStaAuthorized,
- std::placeholders::_1, sta, p2p_dev_addr));
+ std::placeholders::_1, sta, p2p_dev_addr ? p2p_dev_addr : kZeroBssid));
}
void HidlManager::notifyApStaDeauthorized(
struct wpa_supplicant *wpa_s, const u8 *sta, const u8 *p2p_dev_addr)
{
- if (!wpa_s || !wpa_s->parent || !sta || !p2p_dev_addr)
+ if (!wpa_s || !wpa_s->parent || !sta)
return;
if (p2p_iface_object_map_.find(wpa_s->parent->ifname) ==
p2p_iface_object_map_.end())
@@ -1347,7 +1346,7 @@
callWithEachP2pIfaceCallback(
wpa_s->parent->ifname, std::bind(
&ISupplicantP2pIfaceCallback::onStaDeauthorized,
- std::placeholders::_1, sta, p2p_dev_addr));
+ std::placeholders::_1, sta, p2p_dev_addr ? p2p_dev_addr : kZeroBssid));
}
void HidlManager::notifyExtRadioWorkStart(