Commit 636707e5 authored by Johannes Berg's avatar Johannes Berg

mac80211: mesh: fix HE operation element length check

The length check here was bad, if the length doesn't at
least include the length of the fixed part, we cannot
call ieee80211_he_oper_size() to determine the total.
Fix this, and convert to cfg80211_find_ext_elem() while
at it.

Cc: stable@vger.kernel.org
Fixes: 70debba3 ("mac80211: save HE oper info in BSS config for mesh")
Link: https://lore.kernel.org/r/20210930131120.b0f940976c56.I954e1be55e9f87cc303165bff5c906afe1e54648@changeidSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
parent ca6e11c3
...@@ -672,7 +672,7 @@ ieee80211_mesh_update_bss_params(struct ieee80211_sub_if_data *sdata, ...@@ -672,7 +672,7 @@ ieee80211_mesh_update_bss_params(struct ieee80211_sub_if_data *sdata,
u8 *ie, u8 ie_len) u8 *ie, u8 ie_len)
{ {
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
const u8 *cap; const struct element *cap;
const struct ieee80211_he_operation *he_oper = NULL; const struct ieee80211_he_operation *he_oper = NULL;
sband = ieee80211_get_sband(sdata); sband = ieee80211_get_sband(sdata);
...@@ -687,9 +687,10 @@ ieee80211_mesh_update_bss_params(struct ieee80211_sub_if_data *sdata, ...@@ -687,9 +687,10 @@ ieee80211_mesh_update_bss_params(struct ieee80211_sub_if_data *sdata,
sdata->vif.bss_conf.he_support = true; sdata->vif.bss_conf.he_support = true;
cap = cfg80211_find_ext_ie(WLAN_EID_EXT_HE_OPERATION, ie, ie_len); cap = cfg80211_find_ext_elem(WLAN_EID_EXT_HE_OPERATION, ie, ie_len);
if (cap && cap[1] >= ieee80211_he_oper_size(&cap[3])) if (cap && cap->datalen >= 1 + sizeof(*he_oper) &&
he_oper = (void *)(cap + 3); cap->datalen >= 1 + ieee80211_he_oper_size(cap->data + 1))
he_oper = (void *)(cap->data + 1);
if (he_oper) if (he_oper)
sdata->vif.bss_conf.he_oper.params = sdata->vif.bss_conf.he_oper.params =
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment