WPS: Verify wpa_config_set() return value more consistently
authorJouni Malinen <j@w1.fi>
Tue, 1 Jan 2013 18:30:17 +0000 (20:30 +0200)
committerJouni Malinen <j@w1.fi>
Sat, 12 Jan 2013 15:51:53 +0000 (17:51 +0200)
Even though this command is very unlikely to fail, in theory, it could
and the WPS connection would fail in such a case. Return more clearer
failure indication in such a case without even trying to start
reassociation.

Signed-hostap: Jouni Malinen <j@w1.fi>

wpa_supplicant/wps_supplicant.c

index 8ab5f64..711c3c0 100644 (file)
@@ -938,7 +938,8 @@ int wpas_wps_start_pbc(struct wpa_supplicant *wpa_s, const u8 *bssid,
                }
        }
 #endif /* CONFIG_P2P */
-       wpa_config_set(ssid, "phase1", "\"pbc=1\"", 0);
+       if (wpa_config_set(ssid, "phase1", "\"pbc=1\"", 0) < 0)
+               return -1;
        if (wpa_s->wps_fragment_size)
                ssid->eap.fragment_size = wpa_s->wps_fragment_size;
        eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout,
@@ -981,7 +982,8 @@ int wpas_wps_start_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
                os_snprintf(val, sizeof(val), "\"pin=%08d dev_pw_id=%u\"",
                            rpin, dev_pw_id);
        }
-       wpa_config_set(ssid, "phase1", val, 0);
+       if (wpa_config_set(ssid, "phase1", val, 0) < 0)
+               return -1;
        if (wpa_s->wps_fragment_size)
                ssid->eap.fragment_size = wpa_s->wps_fragment_size;
        eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout,
@@ -1055,7 +1057,8 @@ int wpas_wps_start_reg(struct wpa_supplicant *wpa_s, const u8 *bssid,
        res = os_snprintf(pos, end - pos, "\"");
        if (res < 0 || res >= end - pos)
                return -1;
-       wpa_config_set(ssid, "phase1", val, 0);
+       if (wpa_config_set(ssid, "phase1", val, 0) < 0)
+               return -1;
        if (wpa_s->wps_fragment_size)
                ssid->eap.fragment_size = wpa_s->wps_fragment_size;
        eloop_register_timeout(WPS_PBC_WALK_TIME, 0, wpas_wps_timeout,