P2P: Allow P2P IE without Device Info in (Re)Assoc Req

This can happen, e.g., when a P2P client connects to a P2P group
using the infrastructure WLAN interface instead of P2P group
interface. In that case, the P2P client may behave as if the GO
would be a P2P Manager WLAN AP.
This commit is contained in:
Jouni Malinen 2010-08-01 16:47:38 -07:00 committed by Jouni Malinen
parent b6c79a998f
commit 5548ddc217
2 changed files with 16 additions and 2 deletions

View File

@ -781,8 +781,12 @@ static u16 check_assoc_ies(struct hostapd_data *hapd, struct sta_info *sta,
P2P_IE_VENDOR_TYPE); P2P_IE_VENDOR_TYPE);
if (p2p_group_notif_assoc(hapd->p2p_group, sta->addr, if (p2p_group_notif_assoc(hapd->p2p_group, sta->addr,
ies, ies_len) < 0) ies, ies_len) < 0) {
wpa_printf(MSG_DEBUG, "P2P: Invalid P2P IE in "
"(Re)Association Request frame from "
MACSTR, MAC2STR(sta->addr));
return WLAN_STATUS_UNSPECIFIED_FAILURE; return WLAN_STATUS_UNSPECIFIED_FAILURE;
}
} else { } else {
wpabuf_free(sta->p2p_ie); wpabuf_free(sta->p2p_ie);
sta->p2p_ie = NULL; sta->p2p_ie = NULL;

View File

@ -323,8 +323,18 @@ int p2p_group_notif_assoc(struct p2p_group *group, const u8 *addr,
m->client_info = p2p_build_client_info(addr, m->p2p_ie, &m->dev_capab, m->client_info = p2p_build_client_info(addr, m->p2p_ie, &m->dev_capab,
m->dev_addr); m->dev_addr);
if (m->client_info == NULL) { if (m->client_info == NULL) {
/*
* This can happen, e.g., when a P2P client connects to a P2P
* group using the infrastructure WLAN interface instead of
* P2P group interface. In that case, the P2P client may behave
* as if the GO would be a P2P Manager WLAN AP.
*/
wpa_msg(group->p2p->cfg->msg_ctx, MSG_DEBUG,
"P2P: Could not build Client Info from P2P IE - "
"assume " MACSTR " is not a P2P client",
MAC2STR(addr));
p2p_group_free_member(m); p2p_group_free_member(m);
return -1; return 0;
} }
m->next = group->members; m->next = group->members;