]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
hostapd: Check driver parameter before replacing previous value
authorJouni Malinen <j@w1.fi>
Tue, 27 Dec 2016 09:33:35 +0000 (11:33 +0200)
committerJouni Malinen <j@w1.fi>
Tue, 27 Dec 2016 09:33:35 +0000 (11:33 +0200)
This leaves the previously configured value in place if "SET driver ..."
command fails.

Signed-off-by: Jouni Malinen <j@w1.fi>
hostapd/config_file.c

index 32ae6883ee6f7c20b188b0c02b456bb26ce23b88..ada660132a518f76da78a848081b75342f653c46 100644 (file)
@@ -2055,20 +2055,21 @@ static int hostapd_config_fill(struct hostapd_config *conf,
                os_strlcpy(bss->wds_bridge, pos, sizeof(bss->wds_bridge));
        } else if (os_strcmp(buf, "driver") == 0) {
                int j;
-               /* clear to get error below if setting is invalid */
-               conf->driver = NULL;
+               const struct wpa_driver_ops *driver = NULL;
+
                for (j = 0; wpa_drivers[j]; j++) {
                        if (os_strcmp(pos, wpa_drivers[j]->name) == 0) {
-                               conf->driver = wpa_drivers[j];
+                               driver = wpa_drivers[j];
                                break;
                        }
                }
-               if (conf->driver == NULL) {
+               if (!driver) {
                        wpa_printf(MSG_ERROR,
                                   "Line %d: invalid/unknown driver '%s'",
                                   line, pos);
                        return 1;
                }
+               conf->driver = driver;
        } else if (os_strcmp(buf, "driver_params") == 0) {
                os_free(conf->driver_params);
                conf->driver_params = os_strdup(pos);