--- a/sys/dev/netif/iwn/if_iwn.c +++ b/sys/dev/netif/iwn/if_iwn.c @@ -5592,6 +5592,11 @@ iwn_set_timing(struct iwn_softc *sc, struct ieee80211_node *ni) memset(&cmd, 0, sizeof cmd); memcpy(&cmd.tstamp, ni->ni_tstamp.data, sizeof (uint64_t)); cmd.bintval = htole16(ni->ni_intval); cmd.lintval = htole16(10); + + /* A beacon interval of 0 (malicious/corrupt AP) would divide by + * zero below; bail out instead of taking a #DE. */ + if (ni->ni_intval == 0) + return EINVAL; /* Compute remaining time until next beacon. */ val = (uint64_t)ni->ni_intval * IEEE80211_DUR_TU;