X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3a7639e545c0543bcec19c4321dd3ba397fbe6fa..66f29e001c608bf8ca3ed25f492fbd88e23e1b5e:/print-rsvp.c diff --git a/print-rsvp.c b/print-rsvp.c index 5a9fb1fc..05e76393 100644 --- a/print-rsvp.c +++ b/print-rsvp.c @@ -487,11 +487,11 @@ static const struct tok rsvp_obj_generalized_uni_values[] = { * it is called from various rsvp objects; * returns the amount of bytes being processed */ -static int +static u_int rsvp_intserv_print(netdissect_options *ndo, const u_char *tptr, u_short obj_tlen) { - int parameter_id,parameter_length; + u_int parameter_id,parameter_length; union { float f; uint32_t i; @@ -499,6 +499,7 @@ rsvp_intserv_print(netdissect_options *ndo, if (obj_tlen < 4) return 0; + ND_TCHECK_1(tptr); parameter_id = EXTRACT_U_1(tptr); ND_TCHECK_2(tptr + 2); parameter_length = EXTRACT_BE_U_2(tptr + 2)<<2; /* convert wordcount to bytecount */ @@ -592,7 +593,7 @@ rsvp_intserv_print(netdissect_options *ndo, */ if (parameter_length == 20) { - ND_TCHECK2(*(tptr + 4), 20); + ND_TCHECK_LEN(tptr + 4, 20); bw.i = EXTRACT_BE_U_4(tptr + 4); ND_PRINT((ndo, "\n\t\tToken Bucket Rate: %.10g Mbps", bw.f / 125000)); bw.i = EXTRACT_BE_U_4(tptr + 8); @@ -669,7 +670,8 @@ rsvp_obj_print(netdissect_options *ndo, const struct rsvp_obj_frr_t *rsvp_obj_frr; } obj_ptr; - u_short rsvp_obj_len,rsvp_obj_ctype,obj_tlen,intserv_serv_tlen; + u_short rsvp_obj_len,rsvp_obj_ctype,obj_tlen; + u_int intserv_serv_tlen; int hexdump,processed,padbytes,error_code,error_value,i,sigcheck; union { float f; @@ -681,7 +683,7 @@ rsvp_obj_print(netdissect_options *ndo, while(tlen>=sizeof(struct rsvp_object_header)) { /* did we capture enough for fully decoding the object header ? */ - ND_TCHECK2(*tptr, sizeof(struct rsvp_object_header)); + ND_TCHECK_LEN(tptr, sizeof(struct rsvp_object_header)); rsvp_obj_header = (const struct rsvp_object_header *)tptr; rsvp_obj_len=EXTRACT_BE_U_2(rsvp_obj_header->length); @@ -725,7 +727,7 @@ rsvp_obj_print(netdissect_options *ndo, obj_tlen=rsvp_obj_len-sizeof(struct rsvp_object_header); /* did we capture enough for fully decoding the object ? */ - if (!ND_TTEST2(*tptr, rsvp_obj_len)) + if (!ND_TTEST_LEN(tptr, rsvp_obj_len)) return -1; hexdump=FALSE; @@ -1376,11 +1378,11 @@ rsvp_obj_print(netdissect_options *ndo, while (obj_tlen >= 4) { intserv_serv_tlen=EXTRACT_BE_U_2(obj_tptr + 2)<<2; - ND_PRINT((ndo, "%s Service Type: %s (%u), break bit %s set, Service length: %u", + ND_PRINT((ndo, "%s Service Type: %s (%u), break bit %sset, Service length: %u", indent, tok2str(rsvp_intserv_service_type_values,"unknown",EXTRACT_U_1((obj_tptr))), EXTRACT_U_1(obj_tptr), - (EXTRACT_U_1(obj_tptr + 1)&0x80) ? "" : "not", + (EXTRACT_U_1(obj_tptr + 1)&0x80) ? "" : "not ", intserv_serv_tlen)); obj_tptr+=4; /* get to the start of the parameter list */ @@ -1848,7 +1850,7 @@ trunc: void rsvp_print(netdissect_options *ndo, - register const u_char *pptr, register u_int len) + const u_char *pptr, u_int len) { const struct rsvp_common_header *rsvp_com_header; const u_char *tptr;