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.19.2.2 2003-11-16 08:51:08 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ah.c,v 1.19.2.3 2003-11-19 00:35:43 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.44.2.2 2003-11-16 08:51:19 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-esp.c,v 1.44.2.3 2003-11-19 00:35:43 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.16.2.2 2003-11-16 08:51:23 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-frag6.c,v 1.16.2.3 2003-11-19 00:35:43 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.128.2.3 2003-11-19 00:17:01 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip.c,v 1.128.2.4 2003-11-19 00:35:44 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.32.2.3 2003-11-19 00:17:02 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip6.c,v 1.32.2.4 2003-11-19 00:35:44 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.14.2.2 2003-11-16 08:51:27 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ip6opts.c,v 1.14.2.3 2003-11-19 00:35:44 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.17.2.2 2003-11-16 08:51:27 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-ipcomp.c,v 1.17.2.3 2003-11-19 00:35:45 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.23.2.2 2003-11-16 08:51:43 guy Exp $";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-rt6.c,v 1.23.2.3 2003-11-19 00:35:45 guy Exp $";
#endif
#ifdef HAVE_CONFIG_H
trunc:
fputs("[|srcrt]", stdout);
- return 65535; /* XXX */
+ return -1;
}
#endif /* INET6 */