64845c1f1a
There was a race condition in how the l2_packet sockets got read that could result in the same socket (e.g., non-bridge) to process both the EAP-Success and the immediately following EAPOL-Key msg 1/4 instead of each frame going in alternative order between the bridge and non-bridge sockets. This could be hit, e.g., if the wpa_supplicant process did not have enough CPU to process all the incoming frames without them getting buffered and both sockets reporting frames simultaneously. This resulted in the duplicated EAP-Success frame getting delivered twice for processing and likely also the EAPOL-Key msg 1/4 getting processed twice. While the latter does not do much harm, the former did clear the EAP authentication state and could result in issues. Fix this by extended the l2_packet Linux packet socket workaround for bridge to check for duplicates against the last two received frames instead of just the last one. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com> |
||
---|---|---|
.. | ||
l2_packet.h | ||
l2_packet_freebsd.c | ||
l2_packet_linux.c | ||
l2_packet_ndis.c | ||
l2_packet_none.c | ||
l2_packet_pcap.c | ||
l2_packet_privsep.c | ||
l2_packet_winpcap.c | ||
Makefile |