aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/wpi
diff options
context:
space:
mode:
authorAdrian Chadd <adrian@FreeBSD.org>2015-05-03 23:40:12 +0000
committerAdrian Chadd <adrian@FreeBSD.org>2015-05-03 23:40:12 +0000
commit3077c104f50aea882da7a4fa534d587133d18921 (patch)
tree98392e81796f36af264663f68646aeee94eebf0d /sys/dev/wpi
parenta20c9aff424ac6c93e268dca47b13117d54d711d (diff)
downloadsrc-3077c104f50aea882da7a4fa534d587133d18921.tar.gz
src-3077c104f50aea882da7a4fa534d587133d18921.zip
[iwn] Do not filter control frames in monitor mode.
PR: kern/197143 Submitted by: Andriy Voskoboinyk <s3erios@gmail.com>
Notes
Notes: svn path=/head/; revision=282402
Diffstat (limited to 'sys/dev/wpi')
-rw-r--r--sys/dev/wpi/if_wpi.c8
1 files changed, 6 insertions, 2 deletions
diff --git a/sys/dev/wpi/if_wpi.c b/sys/dev/wpi/if_wpi.c
index 320961d73c3e..7b438c7024b9 100644
--- a/sys/dev/wpi/if_wpi.c
+++ b/sys/dev/wpi/if_wpi.c
@@ -1972,7 +1972,7 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc *desc,
goto fail1;
}
/* Discard frames that are too short. */
- if (len < sizeof (*wh)) {
+ if (len < sizeof (struct ieee80211_frame_ack)) {
DPRINTF(sc, WPI_DEBUG_RECV, "%s: frame too short: %d\n",
__func__, len);
goto fail1;
@@ -2033,7 +2033,11 @@ wpi_rx_done(struct wpi_softc *sc, struct wpi_rx_desc *desc,
m->m_flags |= M_WEP;
}
- ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *)wh);
+ if (len >= sizeof(struct ieee80211_frame_min))
+ ni = ieee80211_find_rxnode(ic, (struct ieee80211_frame_min *)wh);
+ else
+ ni = NULL;
+
sc->rx_tstamp = tail->tstamp;
if (ieee80211_radiotap_active(ic)) {