aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSunil Dutt <c_duttus@qti.qualcomm.com>2013-10-31 19:30:03 +0530
committerNaresh Jayaram <njayar@codeaurora.org>2013-10-31 19:38:31 +0530
commita9b19586456fd9ff4b502a7f07d65cacf092b34d (patch)
treef14de9153fb1aa2da28eefa7dc84ef96126e1dbf
parentcd97389ead19517726667a4f650b701ea30f9cb7 (diff)
downloadandroid_external_wpa_supplicant_8-a9b19586456fd9ff4b502a7f07d65cacf092b34d.tar.gz
android_external_wpa_supplicant_8-a9b19586456fd9ff4b502a7f07d65cacf092b34d.tar.bz2
android_external_wpa_supplicant_8-a9b19586456fd9ff4b502a7f07d65cacf092b34d.zip
Set GTK rekey offload information after initial group key handshake
The GTK rekey offload information was sent to the driver immediately after the 4-way handshake which ended up being before the initial group key exchange in the case of WPA (v1). This could result in even that initial GTK handshake being offloaded and wpa_supplicant being left in WPA_GROUP_HANDSHAKE state. Fix this by postponing the operation to happen only after the full set of initial EAPOL-Key exchanges have been completed (i.e., in the existing location for WPA2 and a after the group key handshake for WPA). Change-Id: Ieb92c44845b092072145d2943e3cde500b0a2451 CRs-Fixed: 530560 Git-commit: 392e68e81f186b0f05beb14ac2128b9d6e76fe92 Git-repo: git://w1.fi/srv/git/hostap.git Signed-hostap: Jouni Malinen <jouni@qca.qualcomm.com>
-rw-r--r--src/rsn_supp/wpa.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
index e50404ce..ce3f3180 100644
--- a/src/rsn_supp/wpa.c
+++ b/src/rsn_supp/wpa.c
@@ -1132,7 +1132,8 @@ static void wpa_supplicant_process_3_of_4(struct wpa_sm *sm,
goto failed;
}
- wpa_sm_set_rekey_offload(sm);
+ if (ie.gtk)
+ wpa_sm_set_rekey_offload(sm);
return;
@@ -1353,13 +1354,14 @@ static void wpa_supplicant_process_1_of_2(struct wpa_sm *sm,
MAC2STR(sm->bssid), wpa_cipher_txt(sm->group_cipher));
wpa_sm_cancel_auth_timeout(sm);
wpa_sm_set_state(sm, WPA_COMPLETED);
-
- wpa_sm_set_rekey_offload(sm);
} else {
wpa_supplicant_key_neg_complete(sm, sm->bssid,
key_info &
WPA_KEY_INFO_SECURE);
}
+
+ wpa_sm_set_rekey_offload(sm);
+
return;
failed: