From 6c9a98a20dfc05b09cd2eace4173ba216cf60799 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 15 Jan 2011 16:55:15 +0200 Subject: [PATCH] IBSS RSN: Do not start multiple Auth/Supp for same peer This avoids an issue when a received EAPOL-Key frame from a peer is initiating IBSS RSN Authenticator and Supplicant for the peer and the following new-STA-in-IBSS event from the driver is adding yet another instance of Authenticator/Supplicant. The EAPOL-Key RX case was already checking whether an instance had been started; the driver new-STA event needs to do same. --- wpa_supplicant/ibss_rsn.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/wpa_supplicant/ibss_rsn.c b/wpa_supplicant/ibss_rsn.c index d4894a5b3..4792ef6c1 100644 --- a/wpa_supplicant/ibss_rsn.c +++ b/wpa_supplicant/ibss_rsn.c @@ -361,6 +361,15 @@ int ibss_rsn_start(struct ibss_rsn *ibss_rsn, const u8 *addr) { struct ibss_rsn_peer *peer; + for (peer = ibss_rsn->peers; peer; peer = peer->next) { + if (os_memcmp(addr, peer->addr, ETH_ALEN) == 0) { + wpa_printf(MSG_DEBUG, "RSN: IBSS Authenticator and " + "Supplicant for peer " MACSTR " already " + "running", MAC2STR(addr)); + return 0; + } + } + wpa_printf(MSG_DEBUG, "RSN: Starting IBSS Authenticator and " "Supplicant for peer " MACSTR, MAC2STR(addr));