diff options
author | Stanislaw Gruszka <sgruszka@redhat.com> | 2012-01-11 09:26:54 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2012-01-11 15:14:50 -0500 |
commit | 1140afa862842ac3e56678693050760edc4ecde9 (patch) | |
tree | cd11d29f32ce0391b6565b37a1aa6dc8b319a42e /net | |
parent | bdd3ae3d1e749cf6597f035a5357f297a1af8eb3 (diff) | |
download | linux-1140afa862842ac3e56678693050760edc4ecde9.tar.gz linux-1140afa862842ac3e56678693050760edc4ecde9.tar.bz2 linux-1140afa862842ac3e56678693050760edc4ecde9.zip |
mac80211: fix rx->key NULL pointer dereference in promiscuous mode
Since:
commit 816c04fe7ef01dd9649f5ccfe796474db8708be5
Author: Christian Lamparter <chunkeey@googlemail.com>
Date: Sat Apr 30 15:24:30 2011 +0200
mac80211: consolidate MIC failure report handling
is possible to that we dereference rx->key == NULL when driver set
RX_FLAG_MMIC_STRIPPED and not RX_FLAG_IV_STRIPPED and we are in
promiscuous mode. This happen with rt73usb and rt61pci at least.
Before the commit we always check rx->key against NULL, so I assume
fix should be done in mac80211 (also mic_fail path has similar check).
References:
https://bugzilla.redhat.com/show_bug.cgi?id=769766
http://rt2x00.serialmonkey.com/pipermail/users_rt2x00.serialmonkey.com/2012-January/004395.html
Cc: stable@vger.kernel.org # 3.0+
Reported-by: Stuart D Gathman <stuart@gathman.org>
Reported-by: Kai Wohlfahrt <kai.scorpio@gmail.com>
Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r-- | net/mac80211/wpa.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/net/mac80211/wpa.c b/net/mac80211/wpa.c index 93aab0715e8a..422b79851ec5 100644 --- a/net/mac80211/wpa.c +++ b/net/mac80211/wpa.c @@ -106,7 +106,7 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx) if (status->flag & RX_FLAG_MMIC_ERROR) goto mic_fail; - if (!(status->flag & RX_FLAG_IV_STRIPPED)) + if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key) goto update_iv; return RX_CONTINUE; |