Commit ba9d0db9 authored by Johannes Berg's avatar Johannes Berg
Browse files

mac80211: fils: use cfg80211_find_ext_elem()

Replace the use of cfg80211_find_ext_ie() with the more
structured cfg80211_find_ext_elem().

Link: https://lore.kernel.org/r/20210930131130.17ecf37f0605.I853c2f9c2117a713deca9b8deb3552796d98ffac@changeid


Signed-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent 8223ac19
Loading
Loading
Loading
Loading
+12 −10
Original line number Original line Diff line number Diff line
@@ -219,7 +219,8 @@ int fils_encrypt_assoc_req(struct sk_buff *skb,
{
{
	struct ieee80211_mgmt *mgmt = (void *)skb->data;
	struct ieee80211_mgmt *mgmt = (void *)skb->data;
	u8 *capab, *ies, *encr;
	u8 *capab, *ies, *encr;
	const u8 *addr[5 + 1], *session;
	const u8 *addr[5 + 1];
	const struct element *session;
	size_t len[5 + 1];
	size_t len[5 + 1];
	size_t crypt_len;
	size_t crypt_len;


@@ -231,12 +232,12 @@ int fils_encrypt_assoc_req(struct sk_buff *skb,
		ies = mgmt->u.assoc_req.variable;
		ies = mgmt->u.assoc_req.variable;
	}
	}


	session = cfg80211_find_ext_ie(WLAN_EID_EXT_FILS_SESSION,
	session = cfg80211_find_ext_elem(WLAN_EID_EXT_FILS_SESSION,
					 ies, skb->data + skb->len - ies);
					 ies, skb->data + skb->len - ies);
	if (!session || session[1] != 1 + 8)
	if (!session || session->datalen != 1 + 8)
		return -EINVAL;
		return -EINVAL;
	/* encrypt after FILS Session element */
	/* encrypt after FILS Session element */
	encr = (u8 *)session + 2 + 1 + 8;
	encr = (u8 *)session->data + 1 + 8;


	/* AES-SIV AAD vectors */
	/* AES-SIV AAD vectors */


@@ -270,7 +271,8 @@ int fils_decrypt_assoc_resp(struct ieee80211_sub_if_data *sdata,
{
{
	struct ieee80211_mgmt *mgmt = (void *)frame;
	struct ieee80211_mgmt *mgmt = (void *)frame;
	u8 *capab, *ies, *encr;
	u8 *capab, *ies, *encr;
	const u8 *addr[5 + 1], *session;
	const u8 *addr[5 + 1];
	const struct element *session;
	size_t len[5 + 1];
	size_t len[5 + 1];
	int res;
	int res;
	size_t crypt_len;
	size_t crypt_len;
@@ -280,16 +282,16 @@ int fils_decrypt_assoc_resp(struct ieee80211_sub_if_data *sdata,


	capab = (u8 *)&mgmt->u.assoc_resp.capab_info;
	capab = (u8 *)&mgmt->u.assoc_resp.capab_info;
	ies = mgmt->u.assoc_resp.variable;
	ies = mgmt->u.assoc_resp.variable;
	session = cfg80211_find_ext_ie(WLAN_EID_EXT_FILS_SESSION,
	session = cfg80211_find_ext_elem(WLAN_EID_EXT_FILS_SESSION,
					 ies, frame + *frame_len - ies);
					 ies, frame + *frame_len - ies);
	if (!session || session[1] != 1 + 8) {
	if (!session || session->datalen != 1 + 8) {
		mlme_dbg(sdata,
		mlme_dbg(sdata,
			 "No (valid) FILS Session element in (Re)Association Response frame from %pM",
			 "No (valid) FILS Session element in (Re)Association Response frame from %pM",
			 mgmt->sa);
			 mgmt->sa);
		return -EINVAL;
		return -EINVAL;
	}
	}
	/* decrypt after FILS Session element */
	/* decrypt after FILS Session element */
	encr = (u8 *)session + 2 + 1 + 8;
	encr = (u8 *)session->data + 1 + 8;


	/* AES-SIV AAD vectors */
	/* AES-SIV AAD vectors */