mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-11 21:38:32 +08:00
mac80211: check if key has TKIP type before updating IV
This patch fix corruption which can manifest itself by following crash when switching on rfkill switch with rt2x00 driver: https://bugzilla.redhat.com/attachment.cgi?id=615362 Pointer key->u.ccmp.tfm of group key get corrupted in: ieee80211_rx_h_michael_mic_verify(): /* update IV in key information to be able to detect replays */ rx->key->u.tkip.rx[rx->security_idx].iv32 = rx->tkip_iv32; rx->key->u.tkip.rx[rx->security_idx].iv16 = rx->tkip_iv16; because rt2x00 always set RX_FLAG_MMIC_STRIPPED, even if key is not TKIP. We already check type of the key in different path in ieee80211_rx_h_michael_mic_verify() function, so adding additional check here is reasonable. Cc: stable@vger.kernel.org # 3.0+ Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
3d02a9265c
commit
4045f72bcf
@ -106,7 +106,8 @@ ieee80211_rx_h_michael_mic_verify(struct ieee80211_rx_data *rx)
|
|||||||
if (status->flag & RX_FLAG_MMIC_ERROR)
|
if (status->flag & RX_FLAG_MMIC_ERROR)
|
||||||
goto mic_fail;
|
goto mic_fail;
|
||||||
|
|
||||||
if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key)
|
if (!(status->flag & RX_FLAG_IV_STRIPPED) && rx->key &&
|
||||||
|
rx->key->conf.cipher == WLAN_CIPHER_SUITE_TKIP)
|
||||||
goto update_iv;
|
goto update_iv;
|
||||||
|
|
||||||
return RX_CONTINUE;
|
return RX_CONTINUE;
|
||||||
|
Loading…
Reference in New Issue
Block a user