aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlen Kuhne <kuh@google.com>2017-05-04 16:35:16 -0700
committerGlen Kuhne <kuh@google.com>2017-05-04 16:35:16 -0700
commitb3758b2e318490b67422bf8a2256d6cf6534b41b (patch)
tree16bc9cd7e68528473eef6fb3d4d344915cb4e96f
parente45c672031bdfeebf07ac39f020a356643ca3403 (diff)
downloadwpa_supplicant_8-b3758b2e318490b67422bf8a2256d6cf6534b41b.tar.gz
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
-rw-r--r--wpa_supplicant/hidl/hidl.cpp4
-rw-r--r--wpa_supplicant/hidl/hidl_manager.cpp11
2 files changed, 7 insertions, 8 deletions
diff --git a/wpa_supplicant/hidl/hidl.cpp b/wpa_supplicant/hidl/hidl.cpp
index 14167996..e5f5303b 100644
--- a/wpa_supplicant/hidl/hidl.cpp
+++ b/wpa_supplicant/hidl/hidl.cpp
@@ -589,7 +589,7 @@ void wpas_hidl_notify_p2p_sd_response(
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_authorized(
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 15f4111a..72b53a4d 100644
--- a/wpa_supplicant/hidl/hidl_manager.cpp
+++ b/wpa_supplicant/hidl/hidl_manager.cpp
@@ -30,7 +30,7 @@ constexpr char kUmtsAuthRegex[] = "UMTS-AUTH:([0-9a-f]+):([0-9a-f]+)";
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::notifyP2pSdResponse(
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 @@ void HidlManager::notifyApStaDeauthorized(
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(