From: Andrei Otcheretianski Date: Thu, 2 Jul 2015 07:45:01 +0000 (+0300) Subject: P2PS: Validate WPS config methods more accurately in PD Request X-Git-Tag: hostap_2_5~450 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2fc866d1bc89f2e10a51b129a76d9aa0e0bfc1be;p=thirdparty%2Fhostap.git P2PS: Validate WPS config methods more accurately in PD Request In case of a P2PS PD, allow keypad, display, and P2PS WPS config methods. For a legacy PD, allow keypad, display, and pushbutton methods. Signed-off-by: Andrei Otcheretianski Reviewed-by: Ilan Peer --- diff --git a/src/p2p/p2p_pd.c b/src/p2p/p2p_pd.c index 1b2706387..51215119b 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; }