X-Git-Url: https://git.tcpdump.org/tcpdump/blobdiff_plain/01fe0ebe27b2fe957f699ffa4dbdedc46e12f85b..a3fb5569c6d243350694f60e1eab0a4682b45cdf:/util.c diff --git a/util.c b/util.c index f6443051..571dd530 100644 --- a/util.c +++ b/util.c @@ -21,7 +21,7 @@ #ifndef lint static const char rcsid[] _U_ = - "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.95.2.3 2005-05-06 07:57:20 guy Exp $ (LBL)"; + "@(#) $Header: /tcpdump/master/tcpdump/util.c,v 1.95.2.5 2005-06-16 01:19:57 guy Exp $ (LBL)"; #endif #ifdef HAVE_CONFIG_H @@ -135,7 +135,7 @@ fn_printzp(register const u_char *s, register u_int n, } putchar(c); } - return (n == 0) ? 0 : 1; + return (n == 0) ? 0 : ret; } /* @@ -242,8 +242,18 @@ relts_print(int secs) int print_unknown_data(const u_char *cp,const char *ident,int len) { + if (len < 0) { + printf("%sDissector error: print_unknown_data called with negative length", + ident); + return(0); + } if (snapend - cp < len) len = snapend - cp; + if (len < 0) { + printf("%sDissector error: print_unknown_data called with pointer past end of packet", + ident); + return(0); + } hex_print(ident,cp,len); return(1); /* everything is ok */ }