ppp_hdlc(netdissect_options *ndo,
const u_char *p, u_int length)
{
- u_int caplen = ndo->ndo_snapend - p;
+ u_int caplen = ND_BYTES_AVAILABLE_AFTER(p);
u_char *b, *t, c;
const u_char *s;
u_int i, proto;
goto trunc;
if (ndo->ndo_snapend < data)
goto trunc;
- caplen = ndo->ndo_snapend - data;
+ caplen = ND_BYTES_AVAILABLE_AFTER(data);
if (caplen < 4)
goto trunc;
maxbuf = data + caplen;
goto trunc;
if (ndo->ndo_snapend < data)
goto trunc;
- caplen = ndo->ndo_snapend - data;
+ caplen = ND_BYTES_AVAILABLE_AFTER(data);
if (caplen < 4)
goto trunc;
maxbuf = data + caplen;
zmtp1_print_intermediate_part(netdissect_options *ndo, const u_char *cp, const u_int len)
{
u_int frame_offset;
- uint64_t remaining_len;
+ u_int remaining_len;
ND_TCHECK_2(cp);
frame_offset = GET_BE_U_2(cp);
ND_PRINT("\n\t frame offset 0x%04x", frame_offset);
cp += 2;
- remaining_len = ndo->ndo_snapend - cp; /* without the frame length */
+ remaining_len = ND_BYTES_AVAILABLE_AFTER(cp); /* without the frame length */
if (frame_offset == 0xFFFF)
frame_offset = len - 2; /* always within the declared length */
if (frame_offset) {
ND_PRINT("\n\t frame intermediate part, %u bytes", frame_offset);
if (frame_offset > remaining_len)
- ND_PRINT(" (%"PRIu64" captured)", remaining_len);
+ ND_PRINT(" (%u captured)", remaining_len);
if (ndo->ndo_vflag) {
- uint64_t len_printed = min(frame_offset, remaining_len);
+ u_int len_printed = min(frame_offset, remaining_len);
if (ndo->ndo_vflag == 1)
len_printed = min(VBYTES, len_printed);
if (len_printed > 1) {
- ND_PRINT(", first %"PRIu64" byte(s):", len_printed);
+ ND_PRINT(", first %u byte(s):", len_printed);
hex_and_ascii_print(ndo, "\n\t ", cp, len_printed);
}
}
int
print_unknown_data(netdissect_options *ndo, const u_char *cp,const char *ident,int len)
{
+ u_int len_to_print;
+
if (len < 0) {
- ND_PRINT("%sDissector error: print_unknown_data called with negative length",
+ ND_PRINT("%sDissector error: print_unknown_data called with negative length",
ident);
return(0);
}
- if (ndo->ndo_snapend - cp < len)
- len = ndo->ndo_snapend - cp;
- if (len < 0) {
- ND_PRINT("%sDissector error: print_unknown_data called with pointer past end of packet",
+ len_to_print = len;
+ if (ndo->ndo_snapend < cp) {
+ ND_PRINT("%sDissector error: print_unknown_data called with pointer past end of packet",
ident);
return(0);
}
- hex_print(ndo, ident,cp,len);
+ if (ND_BYTES_AVAILABLE_AFTER(cp) < len_to_print)
+ len_to_print = ND_BYTES_AVAILABLE_AFTER(cp);
+ hex_print(ndo, ident, cp, len_to_print);
return(1); /* everything is ok */
}