[PATCH 03/10] P2PS: validate correctly wps methods in PD request

Ilan Peer ilan.peer
Thu Jul 2 00:45:01 PDT 2015


From: Andrei Otcheretianski <andrei.otcheretianski at intel.com>

In case of a P2PS PD allow keypad, display and P2PS WPS methods.
For a legacy PD allow keypad, display and pushbutton methods.

Signed-off-by: Andrei Otcheretianski <andrei.otcheretianski at intel.com>
Reviewed-by: Ilan Peer <ilan.peer at intel.com>
---
 src/p2p/p2p_pd.c | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c
index a2a986f..066029a 100644
--- a/src/p2p/p2p_pd.c
+++ b/src/p2p/p2p_pd.c
@@ -418,6 +418,7 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
 	u8 group_mac[ETH_ALEN];
 	int passwd_id = DEV_PW_DEFAULT;
 	u16 config_methods;
+	u16 allowed_config_methods = WPS_CONFIG_DISPLAY | WPS_CONFIG_KEYPAD;
 
 	if (p2p_parse(data, len, &msg))
 		return;
@@ -441,9 +442,12 @@ void p2p_process_prov_disc_req(struct p2p_data *p2p, const u8 *sa,
 		dev->info.wfd_subelems = wpabuf_dup(msg.wfd_subelems);
 	}
 
-	if (!(msg.wps_config_methods &
-	      (WPS_CONFIG_DISPLAY | WPS_CONFIG_KEYPAD |
-	       WPS_CONFIG_PUSHBUTTON | WPS_CONFIG_P2PS))) {
+	if (msg.adv_id)
+		allowed_config_methods |= WPS_CONFIG_P2PS;
+	else
+		allowed_config_methods |= WPS_CONFIG_PUSHBUTTON;
+
+	if (!(msg.wps_config_methods & allowed_config_methods)) {
 		p2p_dbg(p2p, "Unsupported Config Methods in Provision Discovery Request");
 		goto out;
 	}
-- 
1.9.1




More information about the Hostap mailing list