TDLS: Do not bail when failing to process IEs in Discovery Request
Some APs (Cisco) may tack on a weird IE to the end of a TDLS Discovery Request packet. This needn't fail the response, since the required IEs are verified separately. Signed-off-by: Arik Nemtsov <arikx.nemtsov@intel.com>
This commit is contained in:
parent
7e0f4f470a
commit
bed7eb6808
1 changed files with 9 additions and 2 deletions
|
@ -1378,10 +1378,17 @@ wpa_tdls_process_discovery_request(struct wpa_sm *sm, const u8 *addr,
|
||||||
|
|
||||||
dialog_token = buf[sizeof(struct wpa_tdls_frame)];
|
dialog_token = buf[sizeof(struct wpa_tdls_frame)];
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Some APs will tack on a weird IE to the end of a TDLS
|
||||||
|
* discovery request packet. This needn't fail the response,
|
||||||
|
* since the required IE are verified separately.
|
||||||
|
*/
|
||||||
if (wpa_supplicant_parse_ies(buf + sizeof(struct wpa_tdls_frame) + 1,
|
if (wpa_supplicant_parse_ies(buf + sizeof(struct wpa_tdls_frame) + 1,
|
||||||
len - (sizeof(struct wpa_tdls_frame) + 1),
|
len - (sizeof(struct wpa_tdls_frame) + 1),
|
||||||
&kde) < 0)
|
&kde) < 0) {
|
||||||
return -1;
|
wpa_printf(MSG_DEBUG,
|
||||||
|
"TDLS: Failed to parse IEs in Discovery Request - ignore as an interop workaround");
|
||||||
|
}
|
||||||
|
|
||||||
if (!kde.lnkid) {
|
if (!kde.lnkid) {
|
||||||
wpa_printf(MSG_DEBUG, "TDLS: Link ID not found in Discovery "
|
wpa_printf(MSG_DEBUG, "TDLS: Link ID not found in Discovery "
|
||||||
|
|
Loading…
Reference in a new issue