Catch case where User-Name may be > 250 octets
authorAlan T. DeKok <aland@freeradius.org>
Wed, 19 Oct 2011 15:26:36 +0000 (17:26 +0200)
committerAlan T. DeKok <aland@freeradius.org>
Wed, 19 Oct 2011 15:31:31 +0000 (17:31 +0200)
src/modules/rlm_eap/types/rlm_eap_peap/peap.c

index 0d9a031..21b7e7b 100644 (file)
@@ -938,7 +938,9 @@ int eappeap_process(EAP_HANDLER *handler, tls_session_t *tls_session)
                vp->vp_octets[3] = len & 0xff;
                vp->vp_octets[4] = PW_EAP_IDENTITY;
 
-               memcpy(vp->vp_octets + EAP_HEADER_LEN + 1, t->username->vp_strvalue, t->username->length);
+               if (len > sizeof(vp->vp_octets)) len = sizeof(vp->vp_octets);
+               memcpy(vp->vp_octets + EAP_HEADER_LEN + 1,
+                      t->username->vp_strvalue, len - EAP_HEADER_LEN - 1);
                vp->length = len;
 
                pairadd(&fake->packet->vps, vp);