Patchwork IBSS: fix RSN key initialisation

login
register
mail settings
Submitter Johannes Berg
Date Dec. 11, 2011, 5:54 p.m.
Message ID <1323626083.19298.1.camel@jlt3.sipsolutions.net>
Download mbox | patch
Permalink /patch/130614/
State Accepted
Commit 457a126e298895682b5e9a0bbec60e2fa3aa16e5
Headers show

Comments

Johannes Berg - Dec. 11, 2011, 5:54 p.m.
From: Johannes Berg <johannes.berg@intel.com>

Antonio reported that RSN IBSS failed to work.
We traced it down to a GTK failure, and he then
bisected it to commit bdffdc5ddb0c838af4c90d11:
"AP: Reorder WPA/Beacon initialization".

The reason this commit broke it is that the state
machine's GInit variable is never set to false as
wpa_init_keys() never gets called, and thus new
keys are generated every time the state machine
executes.

Fix this by calling wpa_init_keys() when the new
group has been initialised.

Reported-by: Antonio Quartulli <ordex@autistici.org>
Tested-by: Antonio Quartulli <ordex@autistici.org>
Signed-hostap: Johannes Berg <johannes.berg@intel.com>
---
 wpa_supplicant/ibss_rsn.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)
Jouni Malinen - Dec. 11, 2011, 5:59 p.m.
On Sun, Dec 11, 2011 at 06:54:43PM +0100, Johannes Berg wrote:
> Antonio reported that RSN IBSS failed to work.
> We traced it down to a GTK failure, and he then
> bisected it to commit bdffdc5ddb0c838af4c90d11:
> "AP: Reorder WPA/Beacon initialization".
> 
> The reason this commit broke it is that the state
> machine's GInit variable is never set to false as
> wpa_init_keys() never gets called, and thus new
> keys are generated every time the state machine
> executes.
> 
> Fix this by calling wpa_init_keys() when the new
> group has been initialised.

Thanks, applied.

Patch

diff --git a/wpa_supplicant/ibss_rsn.c b/wpa_supplicant/ibss_rsn.c
index 4bab906..d4fa39d 100644
--- a/wpa_supplicant/ibss_rsn.c
+++ b/wpa_supplicant/ibss_rsn.c
@@ -339,6 +339,8 @@  static int ibss_rsn_auth_init_group(struct ibss_rsn *ibss_rsn,
 		return -1;
 	}
 
+	wpa_init_keys(ibss_rsn->auth_group);
+
 	return 0;
 }