diff --git a/core/mac/src/sys/legacy/src/utils/src/parser_api.c b/core/mac/src/sys/legacy/src/utils/src/parser_api.c index efd8867a74..3a0602e14a 100644 --- a/core/mac/src/sys/legacy/src/utils/src/parser_api.c +++ b/core/mac/src/sys/legacy/src/utils/src/parser_api.c @@ -11030,6 +11030,7 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx, bool is_2g; uint32_t value = 0; uint8_t *ppet; + uint8_t *eht_cap_ie = NULL; if (!mac_ctx || !pe_session || !frm) return QDF_STATUS_E_NULL_VALUE; @@ -11454,11 +11455,21 @@ QDF_STATUS populate_dot11f_assoc_req_mlo_ie(struct mac_context *mac_ctx, if ((eht_caps.present && frm->eht_cap.present && qdf_mem_cmp(&eht_caps, &frm->eht_cap, sizeof(eht_caps))) || (eht_caps.present && !frm->eht_cap.present)) { - len_consumed = 0; - dot11f_pack_ie_eht_cap(mac_ctx, &eht_caps, p_sta_prof, - len_remaining, &len_consumed); - p_sta_prof += len_consumed; - len_remaining -= len_consumed; + eht_cap_ie = qdf_mem_malloc(WLAN_MAX_IE_LEN + 2); + if (eht_cap_ie) { + len_consumed = 0; + lim_ieee80211_pack_ehtcap(eht_cap_ie, eht_caps, + he_caps, is_2g); + len_consumed = eht_cap_ie[1] + 2; + + qdf_mem_copy(p_sta_prof, eht_cap_ie, + len_consumed); + qdf_mem_free(eht_cap_ie); + p_sta_prof += len_consumed; + len_remaining -= len_consumed; + } else { + pe_err("malloc failed for eht_cap_ie"); + } } else if (frm->eht_cap.present && !eht_caps.present) { non_inher_ext_ie_lists[non_inher_ext_len++] = WLAN_EXTN_ELEMID_EHTCAP;