[PATCH] wpa_supplicant: Test all compiled drivers before failing
Samuel Ortiz
sameo
Fri Oct 15 07:51:51 PDT 2010
wpa_supplicant_set_driver() is returning an error if the first driver
in the driver list is not built in. It should continue through the
driver list until it finds one that's built in.
---
wpa_supplicant/wpa_supplicant.c | 34 ++++++++++++++++++++--------------
1 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
index 61d1c87..1f682c8 100644
--- a/wpa_supplicant/wpa_supplicant.c
+++ b/wpa_supplicant/wpa_supplicant.c
@@ -1696,7 +1696,7 @@ static int wpa_supplicant_set_driver(struct wpa_supplicant *wpa_s,
{
int i;
size_t len;
- const char *pos;
+ const char *pos, *driver = name;
if (wpa_s == NULL)
return -1;
@@ -1714,20 +1714,26 @@ static int wpa_supplicant_set_driver(struct wpa_supplicant *wpa_s,
return 0;
}
- pos = os_strchr(name, ',');
- if (pos)
- len = pos - name;
- else
- len = os_strlen(name);
- for (i = 0; wpa_drivers[i]; i++) {
- if (os_strlen(wpa_drivers[i]->name) == len &&
- os_strncmp(name, wpa_drivers[i]->name, len) ==
- 0) {
- wpa_s->driver = wpa_drivers[i];
- wpa_s->global_drv_priv = wpa_s->global->drv_priv[i];
- return 0;
+ do {
+ pos = os_strchr(driver, ',');
+ if (pos)
+ len = pos - driver;
+ else
+ len = os_strlen(driver);
+
+ for (i = 0; wpa_drivers[i]; i++) {
+ if (os_strlen(wpa_drivers[i]->name) == len &&
+ os_strncmp(driver, wpa_drivers[i]->name, len) ==
+ 0) {
+ wpa_s->driver = wpa_drivers[i];
+ wpa_s->global_drv_priv =
+ wpa_s->global->drv_priv[i];
+ return 0;
+ }
}
- }
+
+ driver = pos + 1;
+ } while (pos);
wpa_printf(MSG_ERROR, "Unsupported driver '%s'.", name);
return -1;
--
1.7.1
--
Intel Open Source Technology Centre
http://oss.intel.com/
More information about the Hostap
mailing list