From: Andrei Otcheretianski Date: Wed, 3 Apr 2019 15:17:19 +0000 (+0300) Subject: P2PS: Cleanup pending_p2ps_group flag X-Git-Tag: hostap_2_8~55 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=710c692381617a690a35f8f843559ddc24f9d9cf;p=thirdparty%2Fhostap.git P2PS: Cleanup pending_p2ps_group flag pending_p2ps_group flag is not always cleaned, which may later result in an unexpected GO bring up, after PD response is transmitted in wpas_prov_disc_resp_cb(). This can be seen when running the following hwsim tests together: - p2ps_channel_sta_connected_disallow_freq_mcc - p2ps_channel_active_go_and_station_different_mcc Fix this by clearing pending_p2ps_group flag also when processing new PD requests. In addition, set this flag only when really needed. Signed-off-by: Andrei Otcheretianski --- diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c index 3f2b47b7e..e7c1f5d5a 100644 --- a/wpa_supplicant/p2p_supplicant.c +++ b/wpa_supplicant/p2p_supplicant.c @@ -4188,6 +4188,9 @@ static void wpas_p2ps_prov_complete(void *ctx, u8 status, const u8 *dev, return; } + wpa_s->global->pending_p2ps_group = 0; + wpa_s->global->pending_p2ps_group_freq = 0; + if (conncap == P2PS_SETUP_GROUP_OWNER) { /* * We need to copy the interface name. Simply saving a @@ -4198,8 +4201,10 @@ static void wpas_p2ps_prov_complete(void *ctx, u8 status, const u8 *dev, go_ifname[0] = '\0'; if (!go_wpa_s) { - wpa_s->global->pending_p2ps_group = 1; - wpa_s->global->pending_p2ps_group_freq = freq; + if (!response_done) { + wpa_s->global->pending_p2ps_group = 1; + wpa_s->global->pending_p2ps_group_freq = freq; + } if (!wpas_p2p_create_iface(wpa_s)) os_memcpy(go_ifname, wpa_s->ifname,