-
- tptr += sizeof(struct eap_frame_t);
- tlen -= sizeof(struct eap_frame_t);
-
- switch (eap_type) {
- case EAP_FRAME_TYPE_PACKET:
- ND_TCHECK_1(tptr);
- type = EXTRACT_U_1(tptr);
- ND_TCHECK_2(tptr + 2);
- len = EXTRACT_BE_U_2(tptr + 2);
- ND_PRINT(", %s (%u), id %u, len %u",
- tok2str(eap_code_values, "unknown", type),
- type,
- EXTRACT_U_1((tptr + 1)),
- len);
-
- ND_TCHECK_LEN(tptr, len);
-
- if (type == EAP_REQUEST || type == EAP_RESPONSE) {
- /* RFC 3748 Section 4.1 */
- ND_TCHECK_1(tptr + 4);
- subtype = EXTRACT_U_1(tptr + 4);
- ND_PRINT("\n\t\t Type %s (%u)",
- tok2str(eap_type_values, "unknown", subtype),
- subtype);
-
- switch (subtype) {
+ }
+ ND_PRINT("%s (%u), id %u, len %u",
+ tok2str(eap_code_values, "unknown", type),
+ type,
+ GET_U_1((cp + 1)),
+ len);
+
+ ND_TCHECK_LEN(cp, len);
+
+ if (type == EAP_REQUEST || type == EAP_RESPONSE) {
+ /* RFC 3748 Section 4.1 */
+ ND_ICHECK_U(len, <, 5);
+ subtype = GET_U_1(cp + 4);
+ ND_PRINT("\n\t\t Type %s (%u)",
+ tok2str(eap_type_values, "unknown", subtype),
+ subtype);
+
+ switch (subtype) {