[PATCH] WPS: Fix dropped WPS registrar negotiation

Michalis Pappas mpappas at aminocom.com
Tue Sep 30 11:28:21 EDT 2014


During WPS registrar authentication, wpa_supplicant won't complete the
negotiation if the newly authorized registrar does not wish to push an updated
configuration to the AP. Instead, upon reception of M7, wpa_supplicant will
terminate the negotiation with a WPN_NACK and issue a WPS-FAIL event. Nevertheless,
later it will connect to the AP using the received credentials.

This behaviour seems to be broken both semantically and from the standard's point of
view. WPS-FAIL will confuse any applications interfacing with wpa_supplicant to think
that the negotiation failed. Moreover, according to the standard, M8 is not
optional, so WPS_NACK is expected to be sent only when failing to authenticating
or processing a message.

This patch gets wpa_supplicant complete the WPS negotiation and issue a WPS-SUCCESS.

Signed-off-by: Michalis Pappas <mpappas at aminocom.com>
---
 src/wps/wps_registrar.c |   11 +----------
 1 files changed, 1 insertions(+), 10 deletions(-)

diff --git a/src/wps/wps_registrar.c b/src/wps/wps_registrar.c
index b90cc25..d28b153 100644
--- a/src/wps/wps_registrar.c
+++ b/src/wps/wps_registrar.c
@@ -2814,19 +2814,11 @@ static int wps_process_ap_settings_r(struct wps_data *wps,
 		wpa_printf(MSG_INFO, "WPS: Update AP configuration based on "
 			   "new settings");
 		wps_cred_update(&wps->cred, wps->new_ap_settings);
-		return 0;
 	} else {
 		/*
 		 * Use the AP PIN only to receive the current AP settings, not
 		 * to reconfigure the AP.
 		 */
-
-		/*
-		 * Clear selected registrar here since we do not get to
-		 * WSC_Done in this protocol run.
-		 */
-		wps_registrar_pin_completed(wps->wps->registrar);
-
 		msg = wps_build_ap_cred(wps);
 		if (msg == NULL)
 			return -1;
@@ -2844,9 +2836,8 @@ static int wps_process_ap_settings_r(struct wps_data *wps,
 		wps->cred.cred_attr = NULL;
 		wps->cred.cred_attr_len = 0;
 		wpabuf_free(msg);
-
-		return 1;
 	}
+	return 0;
 }
 
 
-- 1.7.2.5.amino.1 


More information about the HostAP mailing list