P2P: Fix association with an AP/P2P GO that is not a P2P manager

Do not add a P2P IE when a station interface is trying to associate
to an AP or P2P GO that publishes a P2P IE but does not include
a P2P manageability attribute.

This addresses an interoperability issue that was reported in
https://bugzilla.kernel.org/show_bug.cgi?id=96471, where a P2P GO
rejects association from a station interface without a specified
reason.

Signed-off-by: Ilan Peer <ilan.peer@intel.com>
This commit is contained in:
Ilan Peer 2015-05-04 15:50:46 +03:00 committed by Jouni Malinen
parent 8884ce03bc
commit 9b05135aa4

View file

@ -2485,10 +2485,21 @@ static int p2p_assoc_req_ie_wlan_ap(struct p2p_data *p2p, const u8 *bssid,
size_t tmplen; size_t tmplen;
int res; int res;
u8 group_capab; u8 group_capab;
struct p2p_message msg;
if (p2p_ie == NULL) if (p2p_ie == NULL)
return 0; /* WLAN AP is not a P2P manager */ return 0; /* WLAN AP is not a P2P manager */
os_memset(&msg, 0, sizeof(msg));
if (p2p_parse_p2p_ie(p2p_ie, &msg) < 0)
return 0;
p2p_dbg(p2p, "BSS P2P manageability %s",
msg.manageability ? "enabled" : "disabled");
if (!msg.manageability)
return 0;
/* /*
* (Re)Association Request - P2P IE * (Re)Association Request - P2P IE
* P2P Capability attribute (shall be present) * P2P Capability attribute (shall be present)