[PATCH] WPS: Send the credential when learning AP params in registrar role
Olivier Sobrie
olivier
Sun Aug 28 10:24:45 PDT 2011
Hi everybody,
On Wed, Aug 10, 2011 at 12:02:02AM +0200, Olivier Sobrie wrote:
> When the supplicant acts as a registrar to learn the access point
> parameters then send the credentials to the wpa_cli interface after
> receiving the 7th message.
> When setting the option 'wps_cred_processing' to 1 or 2 in the
> wpa_supplicant.conf you should receive the credential through the
> wpa control interface.
>
> Without this patch, after the 7th message you got the WPS-CRED-RECEIVED
> notification without the credentials. This was because the cred_attr and
> cred_attr_len were not filled in in the wps structure.
>
> Signed-off-by: Olivier Sobrie <olivier at sobrie.be>
> ---
> src/wps/wps_registrar.c | 36 ++++++++++++++++++++++++++++++++++++
> 1 files changed, 36 insertions(+), 0 deletions(-)
>
> diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c
> index 2d7f632..1f964e7 100644
> --- a/src/wps/wps_registrar.c
> +++ b/src/wps/wps_registrar.c
> @@ -1592,6 +1592,29 @@ static int wps_build_ap_settings(struct wps_data *wps, struct wpabuf *msg)
> return 0;
> }
>
> +static int wps_build_ap_cred(struct wps_data *wps, struct wpabuf *msg)
> +{
> + struct wpabuf *plain;
> +
> + plain = wpabuf_alloc(200);
> + if (plain == NULL)
> + return -1;
> +
> + if (wps_build_ap_settings(wps, plain)) {
> + wpabuf_free(plain);
> + return -1;
> + }
> +
> + wpabuf_put_be16(msg, ATTR_CRED);
> + wpabuf_put_be16(msg, wpabuf_len(plain));
> + wpabuf_put_buf(msg, plain);
> + wpabuf_free(plain);
> +
> + wps->cred.cred_attr = wpabuf_head(msg);
> + wps->cred.cred_attr_len = wpabuf_len(msg);
> +
> + return 0;
> +}
>
> static struct wpabuf * wps_build_m2(struct wps_data *wps)
> {
> @@ -2551,6 +2574,8 @@ static void wps_cred_update(struct wps_credential *dst,
> static int wps_process_ap_settings_r(struct wps_data *wps,
> struct wps_parse_attr *attr)
> {
> + struct wpabuf *msg;
> +
> if (wps->wps->ap || wps->er)
> return 0;
>
> @@ -2577,12 +2602,23 @@ static int wps_process_ap_settings_r(struct wps_data *wps,
> */
> wps_registrar_pin_completed(wps->wps->registrar);
>
> + msg = wpabuf_alloc(1000);
> + if (msg == NULL)
> + return -1;
> +
> + if (wps_build_ap_cred(wps, msg)) {
> + wpabuf_free(msg);
> + return -1;
> + }
> +
> if (wps->ap_settings_cb) {
> wps->ap_settings_cb(wps->ap_settings_cb_ctx,
> &wps->cred);
> + wpabuf_free(msg);
> return 1;
> }
> wps_sta_cred_cb(wps);
> + wpabuf_free(msg);
> return 1;
> }
> }
> --
> 1.7.6
>
Is there a problem with this proposed patch? Do I miss something?
Is there a chance that it will be applied?
Otherwise someone can explain what is wrong?
Thank you for your help,
--
Olivier
More information about the Hostap
mailing list