From b29d086d50f55e063ad9b09f47a02f22f35b1553 Mon Sep 17 00:00:00 2001 From: Jouni Malinen Date: Sat, 13 Feb 2010 18:00:39 +0200 Subject: [PATCH] EAP-TNC: Accept fragment ack frame with Flags field TNC IF-T specification is unclear on the exact contents of the fragment acknowledgement frame. An interoperability issue with the tncs@fhh implementation was reported by Arne Welzel due to the different interpretations of the specification. Relax EAP-TNC server/peer validation rules to accept fragmentation acknowledgement frames to include the Flags field to avoid this issue. --- src/eap_peer/eap_tnc.c | 2 +- src/eap_server/eap_tnc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/eap_peer/eap_tnc.c b/src/eap_peer/eap_tnc.c index c56001528..177d432c1 100644 --- a/src/eap_peer/eap_tnc.c +++ b/src/eap_peer/eap_tnc.c @@ -262,7 +262,7 @@ static struct wpabuf * eap_tnc_process(struct eap_sm *sm, void *priv, "Message Length %u", flags, message_length); if (data->state == WAIT_FRAG_ACK) { - if (len != 0) { + if (len > 1) { wpa_printf(MSG_DEBUG, "EAP-TNC: Unexpected payload in " "WAIT_FRAG_ACK state"); ret->ignore = TRUE; diff --git a/src/eap_server/eap_tnc.c b/src/eap_server/eap_tnc.c index 4cb3ecfb0..93f0cf022 100644 --- a/src/eap_server/eap_tnc.c +++ b/src/eap_server/eap_tnc.c @@ -453,7 +453,7 @@ static void eap_tnc_process(struct eap_sm *sm, void *priv, "Message Length %u", flags, message_length); if (data->state == WAIT_FRAG_ACK) { - if (len != 0) { + if (len > 1) { wpa_printf(MSG_DEBUG, "EAP-TNC: Unexpected payload " "in WAIT_FRAG_ACK state"); data->state = FAIL;