Windows 7 expects an uncompressed EAP Identity request

This commit is contained in:
Andreas Steffen
2011-04-15 15:02:39 +02:00
parent cf6ca6d729
commit ad5033a67c
+30 -16
View File
@@ -53,7 +53,12 @@ METHOD(eap_peap_avp_t, build, void,
pkt = (eap_packet_t*)data.ptr; pkt = (eap_packet_t*)data.ptr;
if (pkt->code == EAP_SUCCESS || pkt->code == EAP_FAILURE) if (pkt->code == EAP_REQUEST && pkt->type == EAP_IDENTITY)
{
/* uncompressed EAP Identity request */
avp_data = data;
}
else if (pkt->code == EAP_SUCCESS || pkt->code == EAP_FAILURE)
{ {
code = (this->is_server) ? EAP_REQUEST : EAP_RESPONSE; code = (this->is_server) ? EAP_REQUEST : EAP_RESPONSE;
writer->write_uint8(writer, code); writer->write_uint8(writer, code);
@@ -86,26 +91,35 @@ METHOD(eap_peap_avp_t, process, status_t,
} }
pkt = (eap_packet_t*)avp_data.ptr; pkt = (eap_packet_t*)avp_data.ptr;
if (len == 11 && pkt->code == code && untoh16(&pkt->length) == len && if (len > 4 && pkt->code == code && untoh16(&pkt->length) == len)
pkt->type == EAP_MSTLV)
{ {
if (memeq(&pkt->data, MS_AVP_Success.ptr, MS_AVP_Success.len)) if (len == 5 && pkt->type == EAP_IDENTITY)
{ {
DBG2(DBG_IKE, "MS Success Result AVP"); /* uncompressed EAP Identity request */
code = EAP_SUCCESS; *data = chunk_clone(avp_data);
return SUCCESS;
} }
else if (memeq(&pkt->data, MS_AVP_Failure.ptr, MS_AVP_Failure.len)) else if (len == 11 && pkt->type == EAP_MSTLV)
{ {
DBG2(DBG_IKE, "MS Failure Result AVP"); /* currently only MS Success/Failure AVPs are supported */
code = EAP_FAILURE; if (memeq(&pkt->data, MS_AVP_Success.ptr, MS_AVP_Success.len))
{
DBG2(DBG_IKE, "MS Success Result AVP");
code = EAP_SUCCESS;
}
else if (memeq(&pkt->data, MS_AVP_Failure.ptr, MS_AVP_Failure.len))
{
DBG2(DBG_IKE, "MS Failure Result AVP");
code = EAP_FAILURE;
}
else
{
DBG1(DBG_IKE, "unknown MS AVP message");
return FAILED;
}
identifier = pkt->identifier;
len = 0;
} }
else
{
DBG1(DBG_IKE, "unknown MS AVP message");
return FAILED;
}
identifier = pkt->identifier;
len = 0;
} }
*data = chunk_alloc(4 + len); *data = chunk_alloc(4 + len);