]> git.ipfire.org Git - thirdparty/hostap.git/commitdiff
FT: Fix RRB messages to use correct endianness
authorJouni Malinen <j@w1.fi>
Sun, 18 Jul 2010 00:48:32 +0000 (17:48 -0700)
committerJouni Malinen <j@w1.fi>
Sun, 18 Jul 2010 00:48:32 +0000 (17:48 -0700)
The pairwise cipher field is supposed to be little endian, but the
message building functions did not swap the bytes on big endian
hosts while the message processing functions did. Fix this by using
little endian byte order in both places.

src/ap/wpa_auth_ft.c

index 0ab3fb4a4be531302888589b89630acc4201bd69..9112f2b812d483332b9ca391fa8eafaac0005db8 100644 (file)
@@ -1431,7 +1431,7 @@ static int wpa_ft_rrb_rx_pull(struct wpa_authenticator *wpa_auth,
        wpa_hexdump_key(MSG_DEBUG, "FT: PMK-R1", r.pmk_r1, PMK_LEN);
        wpa_hexdump(MSG_DEBUG, "FT: PMKR1Name", r.pmk_r1_name,
                    WPA_PMK_NAME_LEN);
-       r.pairwise = pairwise;
+       r.pairwise = host_to_le16(pairwise);
 
        if (aes_wrap(r1kh->key, (FT_R0KH_R1KH_RESP_DATA_LEN + 7) / 8,
                     r.nonce, resp.nonce) < 0) {
@@ -1734,7 +1734,7 @@ static void wpa_ft_generate_pmk_r1(struct wpa_authenticator *wpa_auth,
                    WPA_PMK_NAME_LEN);
        os_get_time(&now);
        WPA_PUT_LE32(f.timestamp, now.sec);
-       f.pairwise = pairwise;
+       f.pairwise = host_to_le16(pairwise);
        if (aes_wrap(r1kh->key, (FT_R0KH_R1KH_PUSH_DATA_LEN + 7) / 8,
                     f.timestamp, frame.timestamp) < 0)
                return;