wlantest: Fix EAPOL buffer length with variable MIC length

struct wpa_eapol_key does not include the MIC field anymore, so need to
add it explicitly.

Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
Jouni Malinen 2017-03-24 20:53:54 +02:00 committed by Jouni Malinen
parent 6c2056abe5
commit 19e7ddf7fb

View File

@ -640,7 +640,7 @@ static void rx_data_eapol_key_3_of_4(struct wlantest *wt, const u8 *dst,
} }
if (wt->write_pcap_dumper && decrypted != key_data) { if (wt->write_pcap_dumper && decrypted != key_data) {
/* Fill in a dummy Data frame header */ /* Fill in a dummy Data frame header */
u8 buf[24 + 8 + sizeof(*eapol) + sizeof(*hdr)]; u8 buf[24 + 8 + sizeof(*eapol) + sizeof(*hdr) + 64];
struct ieee80211_hdr *h; struct ieee80211_hdr *h;
struct wpa_eapol_key *k; struct wpa_eapol_key *k;
const u8 *p; const u8 *p;
@ -675,7 +675,8 @@ static void rx_data_eapol_key_3_of_4(struct wlantest *wt, const u8 *dst,
WPA_PUT_BE16(k->key_info, WPA_PUT_BE16(k->key_info,
key_info & ~WPA_KEY_INFO_ENCR_KEY_DATA); key_info & ~WPA_KEY_INFO_ENCR_KEY_DATA);
WPA_PUT_BE16(pos, plain_len); WPA_PUT_BE16(pos, plain_len);
write_pcap_decrypted(wt, buf, sizeof(buf), write_pcap_decrypted(wt, buf, 24 + 8 + sizeof(*eapol) +
sizeof(*hdr) + mic_len + 2,
decrypted, plain_len); decrypted, plain_len);
} }
@ -835,7 +836,7 @@ static void rx_data_eapol_key_1_of_2(struct wlantest *wt, const u8 *dst,
decrypted, decrypted_len); decrypted, decrypted_len);
if (wt->write_pcap_dumper) { if (wt->write_pcap_dumper) {
/* Fill in a dummy Data frame header */ /* Fill in a dummy Data frame header */
u8 buf[24 + 8 + sizeof(*eapol) + sizeof(*hdr)]; u8 buf[24 + 8 + sizeof(*eapol) + sizeof(*hdr) + 64];
struct ieee80211_hdr *h; struct ieee80211_hdr *h;
struct wpa_eapol_key *k; struct wpa_eapol_key *k;
u8 *pos; u8 *pos;
@ -869,7 +870,8 @@ static void rx_data_eapol_key_1_of_2(struct wlantest *wt, const u8 *dst,
WPA_PUT_BE16(k->key_info, WPA_PUT_BE16(k->key_info,
key_info & ~WPA_KEY_INFO_ENCR_KEY_DATA); key_info & ~WPA_KEY_INFO_ENCR_KEY_DATA);
WPA_PUT_BE16(pos, plain_len); WPA_PUT_BE16(pos, plain_len);
write_pcap_decrypted(wt, buf, sizeof(buf), write_pcap_decrypted(wt, buf, 24 + 8 + sizeof(*eapol) +
sizeof(*hdr) + mic_len + 2,
decrypted, plain_len); decrypted, plain_len);
} }
if (sta->proto & WPA_PROTO_RSN) if (sta->proto & WPA_PROTO_RSN)