diff options
| author | Sunil Dutt <c_duttus@qti.qualcomm.com> | 2013-10-31 19:30:03 +0530 |
|---|---|---|
| committer | Naresh Jayaram <njayar@codeaurora.org> | 2013-10-31 19:38:31 +0530 |
| commit | a9b19586456fd9ff4b502a7f07d65cacf092b34d (patch) | |
| tree | f14de9153fb1aa2da28eefa7dc84ef96126e1dbf | |
| parent | cd97389ead19517726667a4f650b701ea30f9cb7 (diff) | |
| download | android_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.c | 8 |
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: |
