[PATCH 1/1] WPA: Delay processing of EAPOL-key 1/4 MSG
Jithu Jance
jithu
Tue Oct 8 07:08:06 PDT 2013
Please ignore this patch. I missed some portion of the code while merging. I will resend the patch.
- Jithu
> -----Original Message-----
> From: hostap-bounces at lists.shmoo.com [mailto:hostap-
> bounces at lists.shmoo.com] On Behalf Of Jithu Jance
> Sent: Tuesday, October 08, 2013 12:11 PM
> To: hostap at lists.shmoo.com
> Subject: [PATCH 1/1] WPA: Delay processing of EAPOL-key 1/4 MSG
>
> Sometimes EAPOL-key 1/4 message is received
> before the reassoc event(from Driver roaming).
> Delay the processing of EAPOL to let the re-assoc
> info get updated properly.
>
> Signed-hostap: Jithu Jance <jithu at broadcom.com>
> ---
> src/rsn_supp/wpa.c | 27 +++++++++++++++++++++++++++
> 1 file changed, 27 insertions(+)
>
> diff --git a/src/rsn_supp/wpa.c b/src/rsn_supp/wpa.c
> index 292255c..5db0a6f 100644
> --- a/src/rsn_supp/wpa.c
> +++ b/src/rsn_supp/wpa.c
> @@ -1720,6 +1720,33 @@ int wpa_sm_rx_eapol(struct wpa_sm *sm, const
> u8 *src_addr,
> goto out;
> }
>
> + /*
> + * There is possible race condition between receiving the
> + * association event and the EAPOL frame since they are coming
> + * through different paths from the driver. In order to avoid
> + * issues in trying to process the EAPOL frame before receiving
> + * association information, lets queue it for processing until
> + * the association event is received.
> + */
> + if (!peer_key && (key_info & WPA_KEY_INFO_KEY_TYPE) &&
> + !(key_info & WPA_KEY_INFO_MIC) &&
> + (supp->wpa_state == WPA_COMPLETED)) {
> + wpa_msg(sm->ctx->msg_ctx, MSG_INFO,
> + "WPA: EAPOL-Key 1/4 is received in
> WPA_COMPLETED state - Delay"
> + "processing of received EAPOL frame");
> + wpabuf_free(supp->pending_eapol_rx);
> + supp->pending_eapol_rx = wpabuf_alloc_copy(buf, len);
> +
> + if (supp->pending_eapol_rx) {
> + os_get_time(&supp->pending_eapol_rx_time);
> + os_memcpy(supp->pending_eapol_rx_src,src_addr,
> ETH_ALEN);
> + } else {
> + wpa_msg(sm->ctx->msg_ctx, MSG_WARNING,
> + "WPA: memalloc failed for
> pending_eapol_rx. Dropping packet");
> + }
> + goto out;
> + }
> +
> if (!(key_info & (WPA_KEY_INFO_ACK |
> WPA_KEY_INFO_SMK_MESSAGE))
> #ifdef CONFIG_PEERKEY
> && (peerkey == NULL || !peerkey->initiator)
> --
> 1.7.9.5
>
>
> _______________________________________________
> HostAP mailing list
> HostAP at lists.shmoo.com
> http://lists.shmoo.com/mailman/listinfo/hostap
More information about the Hostap
mailing list