From: Jouni Malinen Date: Mon, 30 Mar 2009 15:48:41 +0000 (+0300) Subject: WPS: Fix hostapd runtime WPS configuration after Enrollee run X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=6ce4b59342e6454e3c9a81cb54966fac18c8ea94;p=wpasupplicant WPS: Fix hostapd runtime WPS configuration after Enrollee run If the AP is configured with WPS, we need to update the local WPS data in order to provide correct credentials for Enrollees. --- diff --git a/hostapd/wps_hostapd.c b/hostapd/wps_hostapd.c index 5e9f6b6..15cb7a1 100644 --- a/hostapd/wps_hostapd.c +++ b/hostapd/wps_hostapd.c @@ -234,6 +234,28 @@ static int hostapd_wps_cred_cb(void *ctx, const struct wps_credential *cred) if (hapd->conf->wps_cred_processing == 1) return 0; + os_memcpy(hapd->wps->ssid, cred->ssid, cred->ssid_len); + hapd->wps->ssid_len = cred->ssid_len; + hapd->wps->encr_types = cred->encr_type; + hapd->wps->auth_types = cred->auth_type; + if (cred->key == NULL) { + os_free(hapd->wps->network_key); + hapd->wps->network_key = NULL; + hapd->wps->network_key_len = 0; + } else { + if (hapd->wps->network_key == NULL || + hapd->wps->network_key_len < cred->key_len) { + hapd->wps->network_key_len = 0; + os_free(hapd->wps->network_key); + hapd->wps->network_key = os_malloc(cred->key_len); + if (hapd->wps->network_key == NULL) + return -1; + } + hapd->wps->network_key_len = cred->key_len; + os_memcpy(hapd->wps->network_key, cred->key, cred->key_len); + } + hapd->wps->wps_state = WPS_STATE_CONFIGURED; + len = os_strlen(hapd->iface->config_fname) + 5; tmp_fname = os_malloc(len); if (tmp_fname == NULL)