mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-11 09:09:36 +00:00
mac80211: fix mesh_add_rsn_ie IE finding loop
Previously, the code to copy the RSN IE from the mesh config would increment its pointer by one in the loop instead of by the element length, so there was the potential for mistaking another IE's data fields as the RSN IE. cfg80211_find_ie() exists, so just use that. Signed-off-by: Bob Copeland <me@bobcopeland.com> Signed-off-by: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
aee6499c8c
commit
a40a8c17b2
1 changed files with 8 additions and 13 deletions
|
@ -366,20 +366,15 @@ int mesh_add_rsn_ie(struct ieee80211_sub_if_data *sdata, struct sk_buff *skb)
|
|||
return 0;
|
||||
|
||||
/* find RSN IE */
|
||||
data = ifmsh->ie;
|
||||
while (data < ifmsh->ie + ifmsh->ie_len) {
|
||||
if (*data == WLAN_EID_RSN) {
|
||||
len = data[1] + 2;
|
||||
break;
|
||||
}
|
||||
data++;
|
||||
}
|
||||
data = cfg80211_find_ie(WLAN_EID_RSN, ifmsh->ie, ifmsh->ie_len);
|
||||
if (!data)
|
||||
return 0;
|
||||
|
||||
if (len) {
|
||||
if (skb_tailroom(skb) < len)
|
||||
return -ENOMEM;
|
||||
memcpy(skb_put(skb, len), data, len);
|
||||
}
|
||||
len = data[1] + 2;
|
||||
|
||||
if (skb_tailroom(skb) < len)
|
||||
return -ENOMEM;
|
||||
memcpy(skb_put(skb, len), data, len);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue