summaryrefslogtreecommitdiff
path: root/print-ipx.c
diff options
context:
space:
mode:
authorguy <guy>2005-05-06 08:26:44 +0000
committerguy <guy>2005-05-06 08:26:44 +0000
commit638229f1b61a4a7a44e7939fae11079382690242 (patch)
tree795fe7404d6933c048359b5c77e410a657d60f2f /print-ipx.c
parent6191f36146f5d286304e9b6e893477fe509d83ab (diff)
downloadtcpdump-638229f1b61a4a7a44e7939fae11079382690242.tar.gz
Bounds-check the individual components of a SAP reply.
Make "fn_printzp()" return 0 if we don't run past the end of the packet and we don't find any padding NULs.
Diffstat (limited to 'print-ipx.c')
-rw-r--r--print-ipx.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/print-ipx.c b/print-ipx.c
index d5803b9d..604561c6 100644
--- a/print-ipx.c
+++ b/print-ipx.c
@@ -24,7 +24,7 @@
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ipx.c,v 1.41 2005-05-06 07:56:52 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ipx.c,v 1.42 2005-05-06 08:26:44 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
@@ -159,12 +159,13 @@ ipx_sap_print(const u_short *ipx, u_int length)
(void)printf("ipx-sap-nearest-resp");
for (i = 0; i < 8 && length > 0; i++) {
- TCHECK2(ipx[25], 10);
+ TCHECK(ipx[0]);
(void)printf(" %s '", ipxsap_string(htons(EXTRACT_16BITS(&ipx[0]))));
if (fn_printzp((u_char *)&ipx[1], 48, snapend)) {
printf("'");
goto trunc;
}
+ TCHECK2(ipx[25], 10);
printf("' addr %s",
ipxaddr_string(EXTRACT_32BITS(&ipx[25]), (u_char *)&ipx[27]));
ipx += 32;