*/
int
-print_unknown_data(netdissect_options *ndo, const u_char *cp,const char *ident,int len)
+print_unknown_data(netdissect_options *ndo, const u_char *cp,
+ const char *ident, u_int len)
{
u_int len_to_print;
- if (len < 0) {
- ND_PRINT("%sDissector error: print_unknown_data called with negative length",
- ident);
- return(0);
- }
len_to_print = len;
- if (ndo->ndo_snapend < cp) {
+ if (!ND_TTEST_LEN(cp, 0)) {
ND_PRINT("%sDissector error: print_unknown_data called with pointer past end of packet",
ident);
return(0);
startidx = idx;
while (idx < len) {
- ND_TCHECK_1(pptr + idx);
c = GET_U_1(pptr + idx);
if (c == '\n') {
/*
/* not in this packet */
return (0);
}
- ND_TCHECK_1(pptr + idx + 1);
if (GET_U_1(pptr + idx + 1) == '\n') {
/*
* CR-LF; end of line.
* All printable ASCII, but no line ending after that point
* in the buffer; treat this as if it were truncated.
*/
-trunc:
linelen = idx - startidx;
ND_PRINT("%s%.*s", prefix, (int)linelen, pptr + startidx);
nd_print_trunc(ndo);