]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
wlantest: Fix EAPOL buffer length with variable MIC length
authorJouni Malinen <jouni@qca.qualcomm.com>
Fri, 24 Mar 2017 18:53:54 +0000 (20:53 +0200)
committerJouni Malinen <j@w1.fi>
Sun, 26 Mar 2017 18:13:10 +0000 (21:13 +0300)
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>
wlantest/rx_eapol.c

index aa0566ded29134f0e8af4f613ad1f665bf386eb6..3366ad4c7d2a333b0d3e38c1c2572d03d8ae8ef6 100644 (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) {
                /* 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 wpa_eapol_key *k;
                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,
                             key_info & ~WPA_KEY_INFO_ENCR_KEY_DATA);
                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);
        }
 
@@ -835,7 +836,7 @@ static void rx_data_eapol_key_1_of_2(struct wlantest *wt, const u8 *dst,
                    decrypted, decrypted_len);
        if (wt->write_pcap_dumper) {
                /* 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 wpa_eapol_key *k;
                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,
                             key_info & ~WPA_KEY_INFO_ENCR_KEY_DATA);
                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);
        }
        if (sta->proto & WPA_PROTO_RSN)