SME: Handle association without own extra IEs
[libeap.git] / wpa_supplicant / sme.c
index a31f2db..c66e522 100644 (file)
@@ -183,7 +183,8 @@ void sme_authenticate(struct wpa_supplicant *wpa_s,
                }
 
                if (wpa_s->sme.ft_used &&
-                   os_memcmp(md, wpa_s->sme.mobility_domain, 2) == 0) {
+                   os_memcmp(md, wpa_s->sme.mobility_domain, 2) == 0 &&
+                   wpa_sm_has_ptk(wpa_s->wpa)) {
                        wpa_printf(MSG_DEBUG, "SME: Trying to use FT "
                                   "over-the-air");
                        params.auth_alg = WPA_AUTH_ALG_FT;
@@ -323,7 +324,8 @@ void sme_associate(struct wpa_supplicant *wpa_s, enum wpas_mode mode,
 
        wpa_supplicant_set_state(wpa_s, WPA_ASSOCIATING);
 
-       if (ieee802_11_parse_elems(params.wpa_ie, params.wpa_ie_len, &elems, 0)
+       if (params.wpa_ie == NULL ||
+           ieee802_11_parse_elems(params.wpa_ie, params.wpa_ie_len, &elems, 0)
            < 0) {
                wpa_printf(MSG_DEBUG, "SME: Could not parse own IEs?!");
                os_memset(&elems, 0, sizeof(elems));