Convert wpa_supplicant_get_scan_results_old() to use the same return
style with the other get_scan_results options and clean up the code
by sharing the same scan result freeing and error checking code for
all the options.
-static int wpa_supplicant_get_scan_results_old(struct wpa_supplicant *wpa_s)
+static struct wpa_scan_results * wpa_supplicant_get_scan_results_old(
+ struct wpa_supplicant *wpa_s)
{
#define SCAN_AP_LIMIT 128
struct wpa_scan_result *results;
{
#define SCAN_AP_LIMIT 128
struct wpa_scan_result *results;
if (results == NULL) {
wpa_printf(MSG_WARNING, "Failed to allocate memory for scan "
"results");
if (results == NULL) {
wpa_printf(MSG_WARNING, "Failed to allocate memory for scan "
"results");
}
num = wpa_drv_get_scan_results(wpa_s, results, SCAN_AP_LIMIT);
}
num = wpa_drv_get_scan_results(wpa_s, results, SCAN_AP_LIMIT);
if (num < 0) {
wpa_printf(MSG_DEBUG, "Failed to get scan results");
os_free(results);
if (num < 0) {
wpa_printf(MSG_DEBUG, "Failed to get scan results");
os_free(results);
}
if (num > SCAN_AP_LIMIT) {
wpa_printf(MSG_INFO, "Not enough room for all APs (%d < %d)",
}
if (num > SCAN_AP_LIMIT) {
wpa_printf(MSG_INFO, "Not enough room for all APs (%d < %d)",
- wpa_scan_results_free(wpa_s->scan_res);
- wpa_s->scan_res = NULL;
-
/* Convert old scan result data structure to the new one */
res = os_zalloc(sizeof(*res));
if (res == NULL) {
os_free(results);
/* Convert old scan result data structure to the new one */
res = os_zalloc(sizeof(*res));
if (res == NULL) {
os_free(results);
}
res->res = os_zalloc(num * sizeof(struct wpa_scan_res *));
if (res->res == NULL) {
os_free(results);
os_free(res);
}
res->res = os_zalloc(num * sizeof(struct wpa_scan_res *));
if (res->res == NULL) {
os_free(results);
os_free(res);
}
for (i = 0; i < num; i++) {
}
for (i = 0; i < num; i++) {
- if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_USER_SPACE_MLME) {
- wpa_scan_results_free(wpa_s->scan_res);
+ wpa_scan_results_free(wpa_s->scan_res);
+ if (wpa_s->drv_flags & WPA_DRIVER_FLAGS_USER_SPACE_MLME)
wpa_s->scan_res = ieee80211_sta_get_scan_results(wpa_s);
wpa_s->scan_res = ieee80211_sta_get_scan_results(wpa_s);
- if (wpa_s->scan_res == NULL) {
- wpa_printf(MSG_DEBUG, "Failed to get scan results");
- ret = -1;
- } else
- ret = 0;
- } else if (wpa_s->driver->get_scan_results2 == NULL)
- ret = wpa_supplicant_get_scan_results_old(wpa_s);
- else {
- wpa_scan_results_free(wpa_s->scan_res);
+ else if (wpa_s->driver->get_scan_results2 == NULL)
+ wpa_s->scan_res = wpa_supplicant_get_scan_results_old(wpa_s);
+ else
wpa_s->scan_res = wpa_drv_get_scan_results2(wpa_s);
wpa_s->scan_res = wpa_drv_get_scan_results2(wpa_s);
- if (wpa_s->scan_res == NULL) {
- wpa_printf(MSG_DEBUG, "Failed to get scan results");
- ret = -1;
- } else
- ret = 0;
- }
-
- if (wpa_s->scan_res)
+ if (wpa_s->scan_res == NULL) {
+ wpa_printf(MSG_DEBUG, "Failed to get scan results");
+ ret = -1;
+ } else {
+ ret = 0;
wpa_scan_sort_results(wpa_s->scan_res);
wpa_scan_sort_results(wpa_s->scan_res);