From: Jouni Malinen Date: Tue, 10 Nov 2009 16:00:57 +0000 (+0200) Subject: Fix per-SSID scan (scan_ssid=1) X-Git-Tag: hostap_0_7_0~77 X-Git-Url: http://www.project-moonshot.org/gitweb/?p=libeap.git;a=commitdiff_plain;h=5be45e2e6ef9992224376db0bd882ea8450f2621 Fix per-SSID scan (scan_ssid=1) Commit d3a9822542166e7adec16e24622486ba90359ef5 broke per-SSID scan by using the ssid variable for internal loop and by doing so, overriding the value that was needed below to figure out whether the scan is for a specific SSID. Fix this by using a temporary variable instead when looping over network finding which frequencies to scan for. --- diff --git a/wpa_supplicant/scan.c b/wpa_supplicant/scan.c index 1428d32..bb1f5b5 100644 --- a/wpa_supplicant/scan.c +++ b/wpa_supplicant/scan.c @@ -300,7 +300,7 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx) */ ssid = NULL; } else { - struct wpa_ssid *start = ssid; + struct wpa_ssid *start = ssid, *tssid; int freqs_set = 0; if (ssid == NULL && max_ssids > 1) ssid = wpa_s->conf->ssid; @@ -324,12 +324,12 @@ static void wpa_supplicant_scan(void *eloop_ctx, void *timeout_ctx) ssid = wpa_s->conf->ssid; } - for (ssid = wpa_s->conf->ssid; ssid; ssid = ssid->next) { - if (ssid->disabled) + for (tssid = wpa_s->conf->ssid; tssid; tssid = tssid->next) { + if (tssid->disabled) continue; - if ((params.freqs || !freqs_set) && ssid->scan_freq) { + if ((params.freqs || !freqs_set) && tssid->scan_freq) { int_array_concat(¶ms.freqs, - ssid->scan_freq); + tssid->scan_freq); } else { os_free(params.freqs); params.freqs = NULL;