DragonFlyBSD Kernel Audit
DF-0713 / fix.diff
← back to finding ↓ download raw
diff --git a/sys/netproto/802_11/wlan/ieee80211_dfs.c b/sys/netproto/802_11/wlan/ieee80211_dfs.c
--- a/sys/netproto/802_11/wlan/ieee80211_dfs.c
+++ b/sys/netproto/802_11/wlan/ieee80211_dfs.c
@@ -150,8 +150,10 @@
 		    ic->ic_curchan->ic_ieee, ic->ic_curchan->ic_freq);
 
 		/* XXX clobbers any existing desired channel */
-		/* NB: dfs->newchan may be NULL, that's ok */
-		vap->iv_des_chan = dfs->newchan;
+		/* NB: dfs->newchan may be NULL; use ANYC sentinel so
+		 * downstream != IEEE80211_CHAN_ANYC guards work. */
+		vap->iv_des_chan = (dfs->newchan != NULL) ?
+		    dfs->newchan : IEEE80211_CHAN_ANYC;
 		/* XXX recursive lock need ieee80211_new_state_locked */
 		ieee80211_new_state(vap, IEEE80211_S_SCAN, 0);
 	} else {