mac80211: fix tx select key null pointer crash with hostapd
authorKalle Valo <kalle.valo@iki.fi>
Sat, 23 Jan 2010 18:27:14 +0000 (20:27 +0200)
committerJohn W. Linville <linville@tuxdriver.com>
Sat, 23 Jan 2010 21:47:00 +0000 (16:47 -0500)
Pavel Roskin reported a crash in ieee80211_tx_h_select_key():

http://marc.info/?l=linux-wireless&m=126419655108528&w=2

This is a regression from patch "mac80211: move control.hw_key assignment".
Fix it as suggested by Johannes, adding an else statement to make sure
that tx->key is not accessed when it's null.

Compile-tested only.

Reported-by: Pavel Roskin <proski@gnu.org>
Cc: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: Kalle Valo <kalle.valo@iki.fi>
Tested-by: Bob Copeland <me@bobcopeland.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/tx.c

index fcfa988a37a3380c1907bdeb976dedd44f9a9670..d017b3530d4d256f87693cda6189a404fc49fdc2 100644 (file)
@@ -547,9 +547,10 @@ ieee80211_tx_h_select_key(struct ieee80211_tx_data *tx)
                            !ieee80211_use_mfp(hdr->frame_control, tx->sta,
                                               tx->skb))
                                tx->key = NULL;
-                       skip_hw = (tx->key->conf.flags &
-                                               IEEE80211_KEY_FLAG_SW_MGMT) &&
-                                  ieee80211_is_mgmt(hdr->frame_control);
+                       else
+                               skip_hw = (tx->key->conf.flags &
+                                          IEEE80211_KEY_FLAG_SW_MGMT) &&
+                                       ieee80211_is_mgmt(hdr->frame_control);
                        break;
                case ALG_AES_CMAC:
                        if (!ieee80211_is_mgmt(hdr->frame_control))