#ifndef lint
static const char rcsid[] _U_ =
- "@(#) $Header: /tcpdump/master/tcpdump/print-isoclns.c,v 1.140 2005-05-25 21:59:05 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-isoclns.c,v 1.141 2005-05-25 22:06:24 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
printf("%s %s",
tok2str(clnp_option_sr_rr_values,"Unknown",*tptr),
tok2str(clnp_option_sr_rr_string_values,"Unknown Option %u",op));
- nsap_offset=*(tptr+1)-1; /* offset to nsap list */
+ nsap_offset=*(tptr+1);
+ if (nsap_offset == 0) {
+ printf(" Bad NSAP offset (0)");
+ break;
+ }
+ nsap_offset-=1; /* offset to nsap list */
+ if (nsap_offset > tlen) {
+ printf(" Bad NSAP offset (past end of option)");
+ break;
+ }
tptr+=nsap_offset;
tlen-=nsap_offset;
while (tlen > 0) {