TDLS: Do not bail when failing to process IEs in Discovery Request
authorArik Nemtsov <arik@wizery.com>
Tue, 10 Jun 2014 18:19:10 +0000 (21:19 +0300)
committerJouni Malinen <j@w1.fi>
Tue, 17 Jun 2014 14:08:42 +0000 (17:08 +0300)
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>
src/rsn_supp/tdls.c

index 12bb059..652e52c 100644 (file)
@@ -1378,10 +1378,17 @@ wpa_tdls_process_discovery_request(struct wpa_sm *sm, const u8 *addr,
 
        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,
                                     len - (sizeof(struct wpa_tdls_frame) + 1),
-                                    &kde) < 0)
-               return -1;
+                                    &kde) < 0) {
+               wpa_printf(MSG_DEBUG,
+                          "TDLS: Failed to parse IEs in Discovery Request - ignore as an interop workaround");
+       }
 
        if (!kde.lnkid) {
                wpa_printf(MSG_DEBUG, "TDLS: Link ID not found in Discovery "