aboutsummaryrefslogtreecommitdiffstats
path: root/src/ap/ieee802_1x.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ap/ieee802_1x.c')
-rw-r--r--src/ap/ieee802_1x.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/src/ap/ieee802_1x.c b/src/ap/ieee802_1x.c
index dd0df1d..037bd0c 100644
--- a/src/ap/ieee802_1x.c
+++ b/src/ap/ieee802_1x.c
@@ -727,6 +727,17 @@ void ieee802_1x_receive(struct hostapd_data *hapd, const u8 *sa, const u8 *buf,
!(hapd->iface->drv_flags & WPA_DRIVER_FLAGS_WIRED))) {
wpa_printf(MSG_DEBUG, "IEEE 802.1X data frame from not "
"associated/Pre-authenticating STA");
+ if (sta && (sta->flags & WLAN_STA_ASSOC_REQ_OK)) {
+ wpa_printf(MSG_DEBUG, "Saving EAPOL for later use");
+ wpabuf_free(hapd->pending_eapol_rx);
+ hapd->pending_eapol_rx = wpabuf_alloc_copy(buf, len);
+ if (hapd->pending_eapol_rx) {
+ os_get_time(&hapd->pending_eapol_rx_time);
+ os_memcpy(hapd->pending_eapol_rx_src, sa,
+ ETH_ALEN);
+ }
+ }
+
return;
}