While parsing the Reconfiguration Multi-Link element, subelements
carried in the Multi-Link element were not defragmented. Fix this by
defragmenting the subelement before processing to avoid parsing issues.
Fixes: e5ea30feefa3 ("SME: MLD: Handle reconfiguration Multi-Link element")
Reviewed-by: Rohan Dutta <quic_drohan@quicinc.com>
Signed-off-by: Pooventhiran G <quic_pooventh@quicinc.com>
len -= sizeof(*ml) + common_info->len;
while (len >= 2 + sizeof(struct ieee80211_eht_per_sta_profile)) {
- size_t sub_elem_len = *(pos + 1);
+ size_t sub_elem_len;
+ int num_frag_subelems;
+
+ num_frag_subelems =
+ ieee802_11_defrag_mle_subelem(mlbuf, pos,
+ &sub_elem_len);
+ if (num_frag_subelems < 0) {
+ wpa_printf(MSG_DEBUG,
+ "MLD: Failed to parse MLE subelem");
+ break;
+ }
+
+ len -= num_frag_subelems * 2;
if (2 + sub_elem_len > len) {
wpa_printf(MSG_DEBUG,