(ifsta->flags & IEEE80211_STA_WMM_ENABLED)) {
                struct ieee80211_ht_bss_info bss_info;
                ieee80211_ht_cap_ie_to_ht_info(
-                               (struct ieee80211_ht_cap *)
                                elems.ht_cap_elem, &sta->sta.ht_info);
                ieee80211_ht_addt_info_ie_to_ht_bss_info(
-                               (struct ieee80211_ht_addt_info *)
                                elems.ht_info_elem, &bss_info);
                ieee80211_handle_ht(local, 1, &sta->sta.ht_info, &bss_info);
        }
                struct ieee80211_ht_bss_info bss_info;
 
                ieee80211_ht_addt_info_ie_to_ht_bss_info(
-                               (struct ieee80211_ht_addt_info *)
                                elems.ht_info_elem, &bss_info);
                changed |= ieee80211_handle_ht(local, 1, &conf->ht_conf,
                                               &bss_info);
 
                        elems->ext_supp_rates_len = elen;
                        break;
                case WLAN_EID_HT_CAPABILITY:
-                       elems->ht_cap_elem = pos;
-                       elems->ht_cap_elem_len = elen;
+                       if (elen >= sizeof(struct ieee80211_ht_cap))
+                               elems->ht_cap_elem = (void *)pos;
                        break;
                case WLAN_EID_HT_EXTRA_INFO:
-                       elems->ht_info_elem = pos;
-                       elems->ht_info_elem_len = elen;
+                       if (elen >= sizeof(struct ieee80211_ht_addt_info))
+                               elems->ht_info_elem = (void *)pos;
                        break;
                case WLAN_EID_MESH_ID:
                        elems->mesh_id = pos;