diff options
author | Glen Kuhne <kuh@google.com> | 2017-05-04 16:35:16 -0700 |
---|---|---|
committer | Glen Kuhne <kuh@google.com> | 2017-05-04 16:35:16 -0700 |
commit | b3758b2e318490b67422bf8a2256d6cf6534b41b (patch) | |
tree | 16bc9cd7e68528473eef6fb3d4d344915cb4e96f | |
parent | e45c672031bdfeebf07ac39f020a356643ca3403 (diff) | |
download | wpa_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.cpp | 4 | ||||
-rw-r--r-- | wpa_supplicant/hidl/hidl_manager.cpp | 11 |
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( |