WPS ER: Do not try to process AP Settings in proxied M7 to ER
authorJouni Malinen <j@w1.fi>
Sun, 15 Nov 2009 16:54:37 +0000 (18:54 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 15 Nov 2009 16:54:37 +0000 (18:54 +0200)
In this case, the Enrollee is not an AP, so do not try to process
AP Settings in M7.

src/wps/wps_er.c
src/wps/wps_i.h
src/wps/wps_registrar.c

index eac31e9..7625a8b 100644 (file)
@@ -949,6 +949,7 @@ static void wps_er_sta_start(struct wps_er_sta *sta, struct wpabuf *msg)
        sta->wps = wps_init(&cfg);
        if (sta->wps == NULL)
                return;
+       sta->wps->er = 1;
 
        wps_er_sta_process(sta, msg, WSC_MSG);
 }
index 2d8c7b7..1bf50b9 100644 (file)
@@ -34,6 +34,11 @@ struct wps_data {
         */
        int registrar;
 
+       /**
+        * er - Whether the local end is an external registrar
+        */
+       int er;
+
        enum {
                /* Enrollee states */
                SEND_M1, RECV_M2, SEND_M3, RECV_M4, SEND_M5, RECV_M6, SEND_M7,
index bf8c6f8..76fdb2d 100644 (file)
@@ -2215,7 +2215,7 @@ 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)
 {
-       if (wps->wps->ap)
+       if (wps->wps->ap || wps->er)
                return 0;
 
        /* AP Settings Attributes in M7 when Enrollee is an AP */
@@ -2273,7 +2273,7 @@ static enum wps_process_res wps_process_m7(struct wps_data *wps,
        decrypted = wps_decrypt_encr_settings(wps, attr->encr_settings,
                                              attr->encr_settings_len);
        if (decrypted == NULL) {
-               wpa_printf(MSG_DEBUG, "WPS: Failed to decrypted Encrypted "
+               wpa_printf(MSG_DEBUG, "WPS: Failed to decrypt Encrypted "
                           "Settings attribute");
                wps->state = SEND_WSC_NACK;
                return WPS_CONTINUE;