diff options
author | dim <dim@FreeBSD.org> | 2015-07-08 18:43:55 +0000 |
---|---|---|
committer | dim <dim@FreeBSD.org> | 2015-07-08 18:43:55 +0000 |
commit | 91db3ac96dc3ffb6a6f9079ef98cfe0b9af0f05a (patch) | |
tree | f1fa334feb87f7c8ece7d10caf385b2726e20c57 /contrib/tcpdump/print-ascii.c | |
parent | 706271a799ea439f560140f156e94c430e19fcd3 (diff) | |
parent | c17f8bfdd50cd481c229672bc267cb3c845ace07 (diff) | |
download | FreeBSD-src-91db3ac96dc3ffb6a6f9079ef98cfe0b9af0f05a.zip FreeBSD-src-91db3ac96dc3ffb6a6f9079ef98cfe0b9af0f05a.tar.gz |
Merge ^/head r285153 through r285283.
Diffstat (limited to 'contrib/tcpdump/print-ascii.c')
-rw-r--r-- | contrib/tcpdump/print-ascii.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/contrib/tcpdump/print-ascii.c b/contrib/tcpdump/print-ascii.c index 96410da..3cefef3 100644 --- a/contrib/tcpdump/print-ascii.c +++ b/contrib/tcpdump/print-ascii.c @@ -57,8 +57,12 @@ void ascii_print(netdissect_options *ndo, const u_char *cp, u_int length) { + u_int caplength; register u_char s; + caplength = (ndo->ndo_snapend >= cp) ? ndo->ndo_snapend - cp : 0; + if (length > caplength) + length = caplength; ND_PRINT((ndo, "\n")); while (length > 0) { s = *cp++; @@ -89,12 +93,16 @@ void hex_and_ascii_print_with_offset(netdissect_options *ndo, register const char *ident, register const u_char *cp, register u_int length, register u_int oset) { + u_int caplength; register u_int i; register int s1, s2; register int nshorts; char hexstuff[HEXDUMP_SHORTS_PER_LINE*HEXDUMP_HEXSTUFF_PER_SHORT+1], *hsp; char asciistuff[ASCII_LINELENGTH+1], *asp; + caplength = (ndo->ndo_snapend >= cp) ? ndo->ndo_snapend - cp : 0; + if (length > caplength) + length = caplength; nshorts = length / sizeof(u_short); i = 0; hsp = hexstuff; asp = asciistuff; @@ -147,9 +155,13 @@ hex_print_with_offset(netdissect_options *ndo, const char *ident, const u_char *cp, u_int length, u_int oset) { + u_int caplength; register u_int i, s; register int nshorts; + caplength = (ndo->ndo_snapend >= cp) ? ndo->ndo_snapend - cp : 0; + if (length > caplength) + length = caplength; nshorts = (u_int) length / sizeof(u_short); i = 0; while (--nshorts >= 0) { |