mirror of
https://github.com/torvalds/linux.git
synced 2026-05-29 17:43:52 +02:00
wifi: cfg80211: fix S1G beacon head validation in nl80211
S1G beacons contain fixed length optional fields that precede the variable length elements, ensure we take this into account when validating the beacon. This particular case was missed in1e1f706fc2("wifi: cfg80211/mac80211: correctly parse S1G beacon optional elements"). Fixes:1d47f1198d("nl80211: correctly validate S1G beacon head") Signed-off-by: Lachlan Hodges <lachlan.hodges@morsemicro.com> Link: https://patch.msgid.link/20250626115118.68660-1-lachlan.hodges@morsemicro.com [shorten/reword subject] Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
e34a79b96a
commit
1fe44a86ff
|
|
@ -229,6 +229,7 @@ static int validate_beacon_head(const struct nlattr *attr,
|
|||
unsigned int len = nla_len(attr);
|
||||
const struct element *elem;
|
||||
const struct ieee80211_mgmt *mgmt = (void *)data;
|
||||
const struct ieee80211_ext *ext;
|
||||
unsigned int fixedlen, hdrlen;
|
||||
bool s1g_bcn;
|
||||
|
||||
|
|
@ -237,8 +238,10 @@ static int validate_beacon_head(const struct nlattr *attr,
|
|||
|
||||
s1g_bcn = ieee80211_is_s1g_beacon(mgmt->frame_control);
|
||||
if (s1g_bcn) {
|
||||
fixedlen = offsetof(struct ieee80211_ext,
|
||||
u.s1g_beacon.variable);
|
||||
ext = (struct ieee80211_ext *)mgmt;
|
||||
fixedlen =
|
||||
offsetof(struct ieee80211_ext, u.s1g_beacon.variable) +
|
||||
ieee80211_s1g_optional_len(ext->frame_control);
|
||||
hdrlen = offsetof(struct ieee80211_ext, u.s1g_beacon);
|
||||
} else {
|
||||
fixedlen = offsetof(struct ieee80211_mgmt,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user