]> git.ipfire.org Git - thirdparty/hostap.git/blobdiff - wpa_supplicant/interworking.c
tests: sigma_dut controlled STA and beacon protection
[thirdparty/hostap.git] / wpa_supplicant / interworking.c
index 3987008013f302c3c25d4e15f69b52429296d705..49b9907b079cf1f33ce76af7edb1bd86e0a78af9 100644 (file)
@@ -176,7 +176,7 @@ static int cred_with_nai_realm(struct wpa_supplicant *wpa_s)
                        continue;
                if (!cred->eap_method)
                        return 1;
-               if (cred->realm && cred->roaming_consortium_len == 0)
+               if (cred->realm)
                        return 1;
        }
        return 0;
@@ -1388,11 +1388,18 @@ static struct wpa_cred * interworking_credentials_available_roaming_consortium(
                    cred->num_roaming_consortiums == 0)
                        continue;
 
+               if (!cred->eap_method)
+                       continue;
+
                if ((cred->roaming_consortium_len == 0 ||
                     !roaming_consortium_match(ie, anqp,
                                               cred->roaming_consortium,
                                               cred->roaming_consortium_len)) &&
-                   !cred_roaming_consortiums_match(ie, anqp, cred))
+                   !cred_roaming_consortiums_match(ie, anqp, cred) &&
+                   (cred->required_roaming_consortium_len == 0 ||
+                    !roaming_consortium_match(
+                            ie, anqp, cred->required_roaming_consortium,
+                            cred->required_roaming_consortium_len)))
                        continue;
 
                if (cred_no_required_oi_match(cred, bss))
@@ -1547,7 +1554,7 @@ static int interworking_set_eap_params(struct wpa_ssid *ssid,
                                  cred->domain_suffix_match) < 0)
                return -1;
 
-       ssid->eap.ocsp = cred->ocsp;
+       ssid->eap.cert.ocsp = cred->ocsp;
 
        return 0;
 }
@@ -2255,7 +2262,7 @@ int interworking_home_sp_cred(struct wpa_supplicant *wpa_s,
                        realm++;
                wpa_msg(wpa_s, MSG_DEBUG,
                        "Interworking: Search for match with SIM/USIM domain %s",
-                       realm);
+                       realm ? realm : "[NULL]");
                if (realm &&
                    domain_name_list_contains(domain_names, realm, 1))
                        return 1;
@@ -2626,7 +2633,6 @@ static void interworking_next_anqp_fetch(struct wpa_supplicant *wpa_s)
 {
        struct wpa_bss *bss;
        int found = 0;
-       const u8 *ie;
 
        wpa_printf(MSG_DEBUG, "Interworking: next_anqp_fetch - "
                   "fetch_anqp_in_progress=%d fetch_osu_icon_in_progress=%d",
@@ -2649,8 +2655,7 @@ static void interworking_next_anqp_fetch(struct wpa_supplicant *wpa_s)
        dl_list_for_each(bss, &wpa_s->bss, struct wpa_bss, list) {
                if (!(bss->caps & IEEE80211_CAP_ESS))
                        continue;
-               ie = wpa_bss_get_ie(bss, WLAN_EID_EXT_CAPAB);
-               if (ie == NULL || ie[1] < 4 || !(ie[5] & 0x80))
+               if (!wpa_bss_ext_capab(bss, WLAN_EXT_CAPAB_INTERWORKING))
                        continue; /* AP does not support Interworking */
                if (disallowed_bssid(wpa_s, bss->bssid) ||
                    disallowed_ssid(wpa_s, bss->ssid, bss->ssid_len))
@@ -2671,7 +2676,8 @@ static void interworking_next_anqp_fetch(struct wpa_supplicant *wpa_s)
                        found++;
                        bss->flags |= WPA_BSS_ANQP_FETCH_TRIED;
                        wpa_msg(wpa_s, MSG_INFO, "Starting ANQP fetch for "
-                               MACSTR, MAC2STR(bss->bssid));
+                               MACSTR " (HESSID " MACSTR ")",
+                               MAC2STR(bss->bssid), MAC2STR(bss->hessid));
                        interworking_anqp_send_req(wpa_s, bss);
                        break;
                }
@@ -2983,7 +2989,7 @@ static void interworking_parse_rx_anqp_resp(struct wpa_supplicant *wpa_s,
                        MAC2STR(sa));
                anqp_add_extra(wpa_s, anqp, info_id, pos, slen);
 
-               if (!wpa_sm_pmf_enabled(wpa_s->wpa)) {
+               if (!pmf_in_use(wpa_s, sa)) {
                        wpa_printf(MSG_DEBUG,
                                   "ANQP: Ignore Venue URL since PMF was not enabled");
                        break;