Fix generated WPS PIN values to use zero-padding
authorSzymon Bigos <szymon.bigos@tieto.com>
Fri, 2 Dec 2011 21:04:39 +0000 (23:04 +0200)
committerJouni Malinen <j@w1.fi>
Fri, 2 Dec 2011 21:04:39 +0000 (23:04 +0200)
The dynamically generated PINs are supposed to have 8 digits, but
some PIN generatation cases were not zero-padding these properly.

src/ap/wps_hostapd.c
wpa_supplicant/ap.c

index 60961fd..817012e 100644 (file)
@@ -1350,7 +1350,7 @@ const char * hostapd_wps_ap_pin_random(struct hostapd_data *hapd, int timeout)
        struct wps_ap_pin_data data;
 
        pin = wps_generate_pin();
-       os_snprintf(data.pin_txt, sizeof(data.pin_txt), "%u", pin);
+       os_snprintf(data.pin_txt, sizeof(data.pin_txt), "%08u", pin);
        data.timeout = timeout;
        hostapd_wps_for_each(hapd, wps_ap_pin_set, &data);
        return hapd->conf->ap_pin;
index db0259d..4d186b9 100644 (file)
@@ -711,7 +711,7 @@ int wpa_supplicant_ap_wps_pin(struct wpa_supplicant *wpa_s, const u8 *bssid,
 
        if (pin == NULL) {
                unsigned int rpin = wps_generate_pin();
-               ret_len = os_snprintf(buf, buflen, "%d", rpin);
+               ret_len = os_snprintf(buf, buflen, "%08d", rpin);
                pin = buf;
        } else
                ret_len = os_snprintf(buf, buflen, "%s", pin);
@@ -772,7 +772,7 @@ const char * wpas_wps_ap_pin_random(struct wpa_supplicant *wpa_s, int timeout)
                return NULL;
        hapd = wpa_s->ap_iface->bss[0];
        pin = wps_generate_pin();
-       os_snprintf(pin_txt, sizeof(pin_txt), "%u", pin);
+       os_snprintf(pin_txt, sizeof(pin_txt), "%08u", pin);
        os_free(hapd->conf->ap_pin);
        hapd->conf->ap_pin = os_strdup(pin_txt);
        if (hapd->conf->ap_pin == NULL)