aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/iwlwifi/iwl3945-base.c
diff options
context:
space:
mode:
authorReinette Chatre <reinette.chatre@intel.com>2009-08-13 16:30:50 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-20 11:33:09 -0400
commite6a6cf4c42e0dc3541a63b5f0f88299f982d6704 (patch)
tree574aabd9f6e94079697da91b1ad9c8bad865f0c6 /drivers/net/wireless/iwlwifi/iwl3945-base.c
parenta8b875e7dc80ff442698d8cf4f45ccce400a6a66 (diff)
iwlwifi: prevent read outside array bounds
With EDCA and HCCA we have 16 potential tid values. This is accommodated by mac80211, but iwlwifi only supports EDCA. With this implementation it is thus possible for mac80211 to request a tid that will cause iwlwifi to read outside array bounds. A similar problem exists if traffic is received in an unsupported category. We add error checking to catch these situations. Signed-off-by: Reinette Chatre <reinette.chatre@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/iwlwifi/iwl3945-base.c')
-rw-r--r--drivers/net/wireless/iwlwifi/iwl3945-base.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/net/wireless/iwlwifi/iwl3945-base.c b/drivers/net/wireless/iwlwifi/iwl3945-base.c
index e617411d0c5e..f339c5bd1fde 100644
--- a/drivers/net/wireless/iwlwifi/iwl3945-base.c
+++ b/drivers/net/wireless/iwlwifi/iwl3945-base.c
@@ -544,6 +544,8 @@ static int iwl3945_tx_skb(struct iwl_priv *priv, struct sk_buff *skb)
544 if (ieee80211_is_data_qos(fc)) { 544 if (ieee80211_is_data_qos(fc)) {
545 qc = ieee80211_get_qos_ctl(hdr); 545 qc = ieee80211_get_qos_ctl(hdr);
546 tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK; 546 tid = qc[0] & IEEE80211_QOS_CTL_TID_MASK;
547 if (unlikely(tid >= MAX_TID_COUNT))
548 goto drop;
547 seq_number = priv->stations[sta_id].tid[tid].seq_number & 549 seq_number = priv->stations[sta_id].tid[tid].seq_number &
548 IEEE80211_SCTL_SEQ; 550 IEEE80211_SCTL_SEQ;
549 hdr->seq_ctrl = cpu_to_le16(seq_number) | 551 hdr->seq_ctrl = cpu_to_le16(seq_number) |