--- a/sys/netproto/802_11/wlan/ieee80211_action.c 2026-06-29 12:51:19.000000000 +0000 +++ b/sys/netproto/802_11/wlan/ieee80211_action.c 2026-10-26 03:32:28.582643565 +0000 @@ -84,28 +84,28 @@ { switch (cat) { case IEEE80211_ACTION_CAT_BA: - if (act >= nitems(ba_send_action)) + if (act < 0 || act >= nitems(ba_send_action)) break; ba_send_action[act] = f; return 0; case IEEE80211_ACTION_CAT_HT: - if (act >= nitems(ht_send_action)) + if (act < 0 || act >= nitems(ht_send_action)) break; ht_send_action[act] = f; return 0; case IEEE80211_ACTION_CAT_SELF_PROT: - if (act >= nitems(meshpl_send_action)) + if (act < 0 || act >= nitems(meshpl_send_action)) break; meshpl_send_action[act] = f; return 0; case IEEE80211_ACTION_CAT_MESH: - if (act >= nitems(meshaction_send_action)) + if (act < 0 || act >= nitems(meshaction_send_action)) break; meshaction_send_action[act] = f; return 0; break; case IEEE80211_ACTION_CAT_VENDOR: - if (act >= nitems(vendor_send_action)) + if (act < 0 || act >= nitems(vendor_send_action)) break; vendor_send_action[act] = f; return 0; @@ -126,23 +126,23 @@ switch (cat) { case IEEE80211_ACTION_CAT_BA: - if (act < nitems(ba_send_action)) + if (act >= 0 && act < nitems(ba_send_action)) f = ba_send_action[act]; break; case IEEE80211_ACTION_CAT_HT: - if (act < nitems(ht_send_action)) + if (act >= 0 && act < nitems(ht_send_action)) f = ht_send_action[act]; break; case IEEE80211_ACTION_CAT_SELF_PROT: - if (act < nitems(meshpl_send_action)) + if (act >= 0 && act < nitems(meshpl_send_action)) f = meshpl_send_action[act]; break; case IEEE80211_ACTION_CAT_MESH: - if (act < nitems(meshaction_send_action)) + if (act >= 0 && act < nitems(meshaction_send_action)) f = meshaction_send_action[act]; break; case IEEE80211_ACTION_CAT_VENDOR: - if (act < nitems(vendor_send_action)) + if (act >= 0 && act < nitems(vendor_send_action)) f = vendor_send_action[act]; break; } @@ -183,27 +183,27 @@ { switch (cat) { case IEEE80211_ACTION_CAT_BA: - if (act >= nitems(ba_recv_action)) + if (act < 0 || act >= nitems(ba_recv_action)) break; ba_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_HT: - if (act >= nitems(ht_recv_action)) + if (act < 0 || act >= nitems(ht_recv_action)) break; ht_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_SELF_PROT: - if (act >= nitems(meshpl_recv_action)) + if (act < 0 || act >= nitems(meshpl_recv_action)) break; meshpl_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_MESH: - if (act >= nitems(meshaction_recv_action)) + if (act < 0 || act >= nitems(meshaction_recv_action)) break; meshaction_recv_action[act] = f; return 0; case IEEE80211_ACTION_CAT_VENDOR: - if (act >= nitems(vendor_recv_action)) + if (act < 0 || act >= nitems(vendor_recv_action)) break; vendor_recv_action[act] = f; return 0;