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:
parent
b6c79a998f
commit
5548ddc217
2 changed files with 16 additions and 2 deletions
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue