X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/3824a6c0417a551961d1a1bf4f94f10eff736afc..36332137db86e917bceef892dd5ebdbf1687b51a:/print-wb.c diff --git a/print-wb.c b/print-wb.c index a1455b22..3ae604ff 100644 --- a/print-wb.c +++ b/print-wb.c @@ -19,6 +19,10 @@ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */ +#ifndef lint +static const char rcsid[] _U_ = + "@(#) $Header: /tcpdump/master/tcpdump/print-wb.c,v 1.33 2004-03-24 04:06:28 guy Exp $ (LBL)"; +#endif #ifdef HAVE_CONFIG_H #include "config.h" @@ -32,10 +36,6 @@ #include "addrtoname.h" #include "extract.h" -#ifndef lint -static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/print-wb.c,v 1.31 2003-11-15 00:39:44 guy Exp $ (LBL)"; -#endif /* XXX need to add byte-swapping macros! */ /* XXX - you mean like the ones in "extract.h"? */ @@ -212,7 +212,7 @@ wb_id(const struct pkt_id *id, u_int len) } c = '<'; - for (i = 0; i < nid && (u_char *)io < snapend; ++io, ++i) { + for (i = 0; i < nid && (u_char *)(io + 1) <= snapend; ++io, ++i) { printf("%c%s:%u", c, ipaddr_string(&io->id), EXTRACT_32BITS(&io->off)); c = ','; @@ -267,7 +267,7 @@ wb_prep(const struct pkt_prep *prep, u_int len) } n = EXTRACT_32BITS(&prep->pp_n); ps = (const struct pgstate *)(prep + 1); - while (--n >= 0 && (u_char *)ps < ep) { + while (--n >= 0 && (u_char *)(ps + 1) <= ep) { const struct id_off *io, *ie; char c = '<'; @@ -276,7 +276,7 @@ wb_prep(const struct pkt_prep *prep, u_int len) ipaddr_string(&ps->page.p_sid), EXTRACT_32BITS(&ps->page.p_uid)); io = (struct id_off *)(ps + 1); - for (ie = io + ps->nid; io < ie && (u_char *)io < ep; ++io) { + for (ie = io + ps->nid; io < ie && (u_char *)(io + 1) <= ep; ++io) { printf("%c%s:%u", c, ipaddr_string(&io->id), EXTRACT_32BITS(&io->off)); c = ',';