diff options
author | sam <sam@FreeBSD.org> | 2005-06-13 16:43:14 +0000 |
---|---|---|
committer | sam <sam@FreeBSD.org> | 2005-06-13 16:43:14 +0000 |
commit | b6ecc83f22365fb67ec8b0b70bfcc56f12c76086 (patch) | |
tree | 7f2665d52ef063d679023d8971f394c7a8715809 /contrib/wpa_supplicant/wpa.c | |
parent | 2cc091568002946a68a8b3dc886b4535880e8c37 (diff) | |
download | FreeBSD-src-b6ecc83f22365fb67ec8b0b70bfcc56f12c76086.zip FreeBSD-src-b6ecc83f22365fb67ec8b0b70bfcc56f12c76086.tar.gz |
stripped down import of wpa_supplicant v0.3.9
Approved by: re (dwhite)
Diffstat (limited to 'contrib/wpa_supplicant/wpa.c')
-rw-r--r-- | contrib/wpa_supplicant/wpa.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/contrib/wpa_supplicant/wpa.c b/contrib/wpa_supplicant/wpa.c index 5d4ce73..c70f556 100644 --- a/contrib/wpa_supplicant/wpa.c +++ b/contrib/wpa_supplicant/wpa.c @@ -1035,6 +1035,7 @@ static void wpa_supplicant_process_1_of_4(struct wpa_supplicant *wpa_s, if (hostapd_get_rand(wpa_s->snonce, WPA_NONCE_LEN)) { wpa_msg(wpa_s, MSG_WARNING, "WPA: Failed to get " "random data for SNonce"); + free(rbuf); return; } wpa_s->renew_snonce = 0; @@ -1100,6 +1101,7 @@ static void wpa_supplicant_process_1_of_4(struct wpa_supplicant *wpa_s, wpa_s->cur_pmksa = NULL; abort_cached = 1; } else { + free(rbuf); return; } } @@ -1110,6 +1112,7 @@ static void wpa_supplicant_process_1_of_4(struct wpa_supplicant *wpa_s, "been received from the external IEEE " "802.1X Supplicant - ignoring WPA " "EAPOL-Key frame"); + free(rbuf); return; #endif /* CONFIG_XSUPPLICANT_IFACE */ } @@ -1120,6 +1123,7 @@ static void wpa_supplicant_process_1_of_4(struct wpa_supplicant *wpa_s, "full EAP authenication"); wpa_eapol_send(wpa_s, IEEE802_1X_TYPE_EAPOL_START, (u8 *) "", 0); + free(rbuf); return; } @@ -1963,8 +1967,9 @@ static void wpa_sm_rx_eapol(struct wpa_supplicant *wpa_s, if (be_to_host16(key->key_data_length) > extra_len) { wpa_msg(wpa_s, MSG_INFO, "WPA: Invalid EAPOL-Key frame - " - "key_data overflow (%d > %d)", - be_to_host16(key->key_data_length), extra_len); + "key_data overflow (%d > %lu)", + be_to_host16(key->key_data_length), + (unsigned long) extra_len); return; } @@ -2009,6 +2014,12 @@ void wpa_supplicant_rx_eapol(void *ctx, unsigned char *src_addr, wpa_printf(MSG_DEBUG, "RX EAPOL from " MACSTR, MAC2STR(src_addr)); wpa_hexdump(MSG_MSGDUMP, "RX EAPOL", buf, len); + if (wpa_s->key_mgmt == WPA_KEY_MGMT_NONE) { + wpa_printf(MSG_DEBUG, "Ignored received EAPOL frame since " + "no key management is configured"); + return; + } + if (wpa_s->eapol_received == 0) { /* Timeout for completing IEEE 802.1X and WPA authentication */ wpa_supplicant_req_auth_timeout( @@ -2252,6 +2263,7 @@ int rsn_preauth_init(struct wpa_supplicant *wpa_s, u8 *dst) } memset(ctx, 0, sizeof(*ctx)); ctx->ctx = wpa_s; + ctx->msg_ctx = wpa_s; ctx->preauth = 1; ctx->cb = rsn_preauth_eapol_cb; ctx->cb_ctx = wpa_s; |