[PATCH 4/4] P2P: Fix association with an AP that is not a P2P manager

Ilan Peer ilan.peer at intel.com
Tue Apr 28 07:01:05 EDT 2015


Do not add P2P IE when a non P2P interface is associating to an
AP the is not a P2P manager, i.e., does set the managed bit in
the P2P capability attribute.

Signed-off-by: Ilan Peer <ilan.peer at intel.com>
---
 src/p2p/p2p.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/src/p2p/p2p.c b/src/p2p/p2p.c
index a45fe73..dfc5ae9 100644
--- a/src/p2p/p2p.c
+++ b/src/p2p/p2p.c
@@ -2485,10 +2485,21 @@ static int p2p_assoc_req_ie_wlan_ap(struct p2p_data *p2p, const u8 *bssid,
 	size_t tmplen;
 	int res;
 	u8 group_capab;
+	struct p2p_device *peer;
 
 	if (p2p_ie == NULL)
 		return 0; /* WLAN AP is not a P2P manager */
 
+	peer = p2p_get_device(p2p, bssid);
+	if (!peer)
+		return 0;
+
+	p2p_dbg(p2p, "P2P: managed assoc to " MACSTR" capa=0x%X",
+		MAC2STR(bssid), peer->info.dev_capab);
+
+	if (!(peer->info.dev_capab & P2P_DEV_CAPAB_INFRA_MANAGED))
+		return 0;
+
 	/*
 	 * (Re)Association Request - P2P IE
 	 * P2P Capability attribute (shall be present)
@@ -2509,6 +2520,8 @@ static int p2p_assoc_req_ie_wlan_ap(struct p2p_data *p2p, const u8 *bssid,
 			group_capab |= P2P_GROUP_CAPAB_CROSS_CONN;
 	}
 	p2p_buf_add_capability(tmp, p2p->dev_capab, group_capab);
+
+
 	if ((p2p->dev_capab & P2P_DEV_CAPAB_CONCURRENT_OPER) &&
 	    (p2p->dev_capab & P2P_DEV_CAPAB_INFRA_MANAGED))
 		p2p_buf_add_p2p_interface(tmp, p2p);
-- 
1.9.1



More information about the HostAP mailing list