X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3fb589c3cb18e7e6ec21a97e02bf14613ed8ab62..f7b8cfec15da3c75d501a1a85d515d4e747b65be:/print-ospf.c diff --git a/print-ospf.c b/print-ospf.c index 4b3ade7b..79ed3970 100644 --- a/print-ospf.c +++ b/print-ospf.c @@ -22,8 +22,8 @@ */ #ifndef lint -static const char rcsid[] = - "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.45 2003-10-22 20:00:03 guy Exp $ (LBL)"; +static const char rcsid[] _U_ = + "@(#) $Header: /tcpdump/master/tcpdump/print-ospf.c,v 1.45.2.4 2004-03-24 02:44:30 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -413,12 +413,10 @@ ospf_print_lsa(register const struct lsa *lsap) switch (*(&lsap->ls_hdr.un_lsa_id.opaque_field.opaque_type)) { case LS_OPAQUE_TYPE_TE: - if (!TTEST2(*tptr, 4)) - goto trunc; - tptr = (u_int8_t *)(&lsap->lsa_un.un_te_lsa_tlv.type); while (ls_length != 0) { + TCHECK2(*tptr, 4); if (ls_length < 4) { printf("\n\t Remaining LS length %u < 4", ls_length); return(ls_end); @@ -447,8 +445,7 @@ ospf_print_lsa(register const struct lsa *lsap) tlv_length); return(ls_end); } - if (!TTEST2(*tptr, 4)) - goto trunc; + TCHECK2(*tptr, 4); subtlv_type = EXTRACT_16BITS(tptr); subtlv_length = EXTRACT_16BITS(tptr+2); tptr+=4; @@ -459,8 +456,7 @@ ospf_print_lsa(register const struct lsa *lsap) subtlv_type, subtlv_length); - if (!TTEST2(*tptr, subtlv_length)) - goto trunc; + TCHECK2(*tptr, subtlv_length); switch(subtlv_type) { case LS_OPAQUE_TE_LINK_SUBTLV_ADMIN_GROUP: printf(", 0x%08x", EXTRACT_32BITS(tptr)); @@ -550,6 +546,11 @@ ospf_print_lsa(register const struct lsa *lsap) break; case LS_OPAQUE_TE_TLV_ROUTER: + if (tlv_length < 4) { + printf("\n\t TLV length %u < 4", tlv_length); + return(ls_end); + } + TCHECK2(*tptr, 4); printf(", %s", ipaddr_string(tptr)); break;