return -1 if they run out of data.
Have the IPv4 and IPv6 dissectors check for non-positive return values
from those routines and quit if they see one.
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ah.c,v 1.21 2003-11-16 09:36:11 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ah.c,v 1.22 2003-11-19 00:36:06 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
return sizeof(struct ah) + sumlen;
trunc:
fputs("[|AH]", stdout);
- return 65535;
+ return -1;
}
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-esp.c,v 1.46 2003-11-16 09:36:20 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-esp.c,v 1.47 2003-11-19 00:36:07 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
_U_
#endif
,
- int *nhdr, int *padlen
+ int *nhdr
+#ifndef HAVE_LIBCRYPTO
+ _U_
+#endif
+ ,
+ int *padlen
#ifndef HAVE_LIBCRYPTO
_U_
#endif
#ifdef HAVE_LIBCRYPTO
secret = NULL;
- advance = 0;
+ padvance = 0;
if (!initialized) {
esp_init();
#endif
fail:
- if (nhdr)
- *nhdr = -1;
- return 65536;
+ return -1;
}
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-frag6.c,v 1.18 2003-11-16 09:36:21 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-frag6.c,v 1.19 2003-11-19 00:36:07 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
#if 1
/* it is meaningless to decode non-first fragment */
if ((EXTRACT_16BITS(&dp->ip6f_offlg) & IP6F_OFF_MASK) != 0)
- return 65535;
+ return -1;
else
#endif
{
}
trunc:
fputs("[|frag]", stdout);
- return 65535;
+ return -1;
#undef TCHECK
}
#endif /* INET6 */
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.131 2003-11-19 00:17:32 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.132 2003-11-19 00:36:07 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
case IPPROTO_AH:
nh = *cp;
advance = ah_print(cp);
+ if (advance <= 0)
+ break;
cp += advance;
len -= advance;
goto again;
{
int enh, padlen;
advance = esp_print(cp, (const u_char *)ip, &enh, &padlen);
+ if (advance <= 0)
+ break;
cp += advance;
len -= advance + padlen;
- if (enh < 0)
- break;
nh = enh & 0xff;
goto again;
}
{
int enh;
advance = ipcomp_print(cp, &enh);
+ if (advance <= 0)
+ break;
cp += advance;
len -= advance;
- if (enh < 0)
- break;
nh = enh & 0xff;
goto again;
}
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.35 2003-11-19 00:17:32 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.36 2003-11-19 00:36:07 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
cp = (const u_char *)ip6;
advance = sizeof(struct ip6_hdr);
nh = ip6->ip6_nxt;
- while (cp < snapend) {
+ while (cp < snapend && advance > 0) {
cp += advance;
len -= advance;
{
int enh, padlen;
advance = esp_print(cp, (const u_char *)ip6, &enh, &padlen);
- if (enh < 0)
- goto end;
nh = enh & 0xff;
len -= padlen;
break;
{
int enh;
advance = ipcomp_print(cp, &enh);
- if (enh < 0)
- goto end;
nh = enh & 0xff;
break;
}
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ip6opts.c,v 1.16 2003-11-16 09:36:24 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip6opts.c,v 1.17 2003-11-19 00:36:08 guy Exp $";
#endif
#ifdef INET6
trunc:
fputs("[|HBH]", stdout);
- return(hbhlen);
+ return(-1);
}
int
trunc:
fputs("[|DSTOPT]", stdout);
- return(dstoptlen);
+ return(-1);
}
#endif /* INET6 */
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-ipcomp.c,v 1.19 2003-11-16 09:36:24 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ipcomp.c,v 1.20 2003-11-19 00:36:08 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
#include "extract.h"
int
-ipcomp_print(register const u_char *bp, int *nhdr)
+ipcomp_print(register const u_char *bp, int *nhdr _U_)
{
register const struct ipcomp *ipcomp;
register const u_char *ep;
#endif
fail:
- if (nhdr)
- *nhdr = -1;
- return 65536;
+ return -1;
}
#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-rt6.c,v 1.25 2003-11-16 09:36:35 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-rt6.c,v 1.26 2003-11-19 00:36:08 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
trunc:
fputs("[|srcrt]", stdout);
- return 65535; /* XXX */
+ return -1;
}
#endif /* INET6 */