mac80211: ignore peer link requests from unauthenticated stations.
authorJavier Cardona <javier@cozybit.com>
Thu, 7 Apr 2011 22:08:32 +0000 (15:08 -0700)
committerJohn W. Linville <linville@tuxdriver.com>
Tue, 12 Apr 2011 20:57:38 +0000 (16:57 -0400)
Signed-off-by: Javier Cardona <javier@cozybit.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
net/mac80211/mesh_plink.c

index bafe25594e0913a9be2b3a1d6b76c94c33b08a30..5d0dd9217e5fbb59b9c63a083f93e9f0c90de59a 100644 (file)
@@ -372,6 +372,9 @@ int mesh_plink_open(struct sta_info *sta)
        __le16 llid;
        struct ieee80211_sub_if_data *sdata = sta->sdata;
 
+       if (!test_sta_flags(sta, WLAN_STA_AUTH))
+               return -EPERM;
+
        spin_lock_bh(&sta->lock);
        get_random_bytes(&llid, 2);
        sta->llid = llid;
@@ -484,6 +487,12 @@ void mesh_rx_plink_frame(struct ieee80211_sub_if_data *sdata, struct ieee80211_m
                return;
        }
 
+       if (sta && !test_sta_flags(sta, WLAN_STA_AUTH)) {
+               mpl_dbg("Mesh plink: Action frame from non-authed peer\n");
+               rcu_read_unlock();
+               return;
+       }
+
        if (sta && sta->plink_state == PLINK_BLOCKED) {
                rcu_read_unlock();
                return;