From: Pawel Kulakowski Date: Sun, 11 Nov 2012 14:26:36 +0000 (+0200) Subject: bgscan_learn: Prevent infinite busy looping X-Git-Tag: hostap_2_0~134 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=548f100384137562535bc47a010ea2cab07e3da7;p=thirdparty%2Fhostap.git bgscan_learn: Prevent infinite busy looping In highly congested network (BSSes almost on every channel within ESS) we have hit a bug when wpa_supplicant become completly irresponsive, infinite looping on while loop. When probe_idx was equal 0 and we are not able to probe new frequency, following condition were never fulfilled: "if (!in_array(freqs, data->supp_freqs[idx]))" Signed-hostap: Pawel Kulakowski --- diff --git a/wpa_supplicant/bgscan_learn.c b/wpa_supplicant/bgscan_learn.c index adf82d871..07d31e4cb 100644 --- a/wpa_supplicant/bgscan_learn.c +++ b/wpa_supplicant/bgscan_learn.c @@ -242,8 +242,11 @@ static int * bgscan_learn_get_probe_freq(struct bgscan_learn_data *data, idx = data->probe_idx + 1; while (idx != data->probe_idx) { - if (data->supp_freqs[idx] == 0) + if (data->supp_freqs[idx] == 0) { + if (data->probe_idx == 0) + break; idx = 0; + } if (!in_array(freqs, data->supp_freqs[idx])) { wpa_printf(MSG_DEBUG, "bgscan learn: Probe new freq " "%u", data->supp_freqs[idx]);