|
@@ -2290,9 +2290,16 @@ static int wpa_tdls_process_tpk_m3(struct wpa_sm *sm, const u8 *src_addr,
|
|
|
pos += 2 /* status code */ + 1 /* dialog token */;
|
|
|
|
|
|
ielen = len - (pos - buf); /* start of IE in buf */
|
|
|
+
|
|
|
+ /*
|
|
|
+ * Don't reject the message if failing to parse IEs. The IEs we need are
|
|
|
+ * explicitly checked below. Some APs piggy-back broken IEs to the end
|
|
|
+ * of a TDLS Confirm packet, which will fail the link if we don't ignore
|
|
|
+ * this error.
|
|
|
+ */
|
|
|
if (wpa_supplicant_parse_ies((const u8 *) pos, ielen, &kde) < 0) {
|
|
|
- wpa_printf(MSG_INFO, "TDLS: Failed to parse KDEs in TPK M3");
|
|
|
- goto error;
|
|
|
+ wpa_printf(MSG_DEBUG,
|
|
|
+ "TDLS: Failed to parse KDEs in TPK M3 - ignore as an interop workaround");
|
|
|
}
|
|
|
|
|
|
if (kde.lnkid == NULL || kde.lnkid_len < 3 * ETH_ALEN) {
|