aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJouni Malinen <j@w1.fi>2013-05-28 00:35:47 +0300
committerDeepthi Gowri <deepthi@codeaurora.org>2013-10-30 18:37:31 +0530
commit2a8afe5604c0b9c3b5697a54866232849b990a54 (patch)
tree963bebb9703bffc65a4e0c83bcb5d28e5a2b23d3
parentf1fe1967707a221876d7e49378ece97160e73b32 (diff)
downloadandroid_external_wpa_supplicant_8-2a8afe5604c0b9c3b5697a54866232849b990a54.tar.gz
android_external_wpa_supplicant_8-2a8afe5604c0b9c3b5697a54866232849b990a54.tar.bz2
android_external_wpa_supplicant_8-2a8afe5604c0b9c3b5697a54866232849b990a54.zip
WPS: Allow Device Password Id changes between PIN methods
Commit b4a17a6ea74b2ffba082e05c84730e979513042c added support for the WPS Registrar to change the Device Password based on WSC specification design. However, this added validation for Registrar behavior which resulted in preventing a common P2P use case from working. Relax the validation rules for builds with P2P enabled to allow the Enrollee (P2P client) accepting M1/M2 changes in Device Password Id between Default and Registrar-specified PIN. CRs-Fixed: 538654 Git-commit: 9b1693a162d0c31752098d54181d2ef7631c6135 Git-repo: git://w1.fi/srv/git/hostap.git Signed-hostap: Jouni Malinen <j@w1.fi>
-rw-r--r--src/wps/wps_enrollee.c18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/wps/wps_enrollee.c b/src/wps/wps_enrollee.c
index 9a62fce8..ae17a278 100644
--- a/src/wps/wps_enrollee.c
+++ b/src/wps/wps_enrollee.c
@@ -852,6 +852,24 @@ static int wps_process_dev_pw_id(struct wps_data *wps, const u8 *dev_pw_id)
return 0;
}
+#ifdef CONFIG_P2P
+ if ((id == DEV_PW_DEFAULT &&
+ wps->dev_pw_id == DEV_PW_REGISTRAR_SPECIFIED) ||
+ (id == DEV_PW_REGISTRAR_SPECIFIED &&
+ wps->dev_pw_id == DEV_PW_DEFAULT)) {
+ /*
+ * Common P2P use cases indicate whether the PIN is from the
+ * client or GO using Device Password Id in M1/M2 in a way that
+ * does not look fully compliant with WSC specification. Anyway,
+ * this is deployed and needs to be allowed, so ignore changes
+ * between Registrar-Specified and Default PIN.
+ */
+ wpa_printf(MSG_DEBUG, "WPS: Allow PIN Device Password ID "
+ "change");
+ return 0;
+ }
+#endif /* CONFIG_P2P */
+
wpa_printf(MSG_DEBUG, "WPS: Registrar trying to change Device Password "
"ID from %u to %u", wps->dev_pw_id, id);