P2P: Fix p2p_connect join scan handler in error cases

wpa_drv_scan() may fail for the initial p2p_connect join scan request,
e.g., if the driver happened to be scanning at the time the new
operation was initialized. Previously, a special scan result handler was
registered regardless of whether the new scan was started. This could
result in partial scan results (e.g., from p2p_find social scan) from
being used as full results for join (or now more importantly for
p2p_connect auto) purposes. Fix this by registering the new scan result
handler only if wpa_drv_scan() returns success.

Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2012-04-13 16:13:14 +03:00 committed by Jouni Malinen
parent b31be3a0fd
commit 205e6474a1

View file

@ -2863,8 +2863,9 @@ static void wpas_p2p_join_scan(void *eloop_ctx, void *timeout_ctx)
* Run a scan to update BSS table and start Provision Discovery once * Run a scan to update BSS table and start Provision Discovery once
* the new scan results become available. * the new scan results become available.
*/ */
wpa_s->scan_res_handler = wpas_p2p_scan_res_join;
ret = wpa_drv_scan(wpa_s, &params); ret = wpa_drv_scan(wpa_s, &params);
if (!ret)
wpa_s->scan_res_handler = wpas_p2p_scan_res_join;
wpabuf_free(ies); wpabuf_free(ies);