diff --git a/sys/netproto/802_11/wlan/ieee80211_node.c b/sys/netproto/802_11/wlan/ieee80211_node.c --- a/sys/netproto/802_11/wlan/ieee80211_node.c +++ b/sys/netproto/802_11/wlan/ieee80211_node.c @@ -987,7 +987,10 @@ ie = ies->data; ielen = ies->len; - while (ielen > 0) { + while (ielen >= 2) { + /* validate the IE length byte before trusting it */ + if (ie[1] + 2 > ielen) + break; switch (ie[0]) { case IEEE80211_ELEMID_VENDOR: if (iswpaoui(ie))