When seeing whether the difference between two pointers exceeds an
unsigned value (we know the difference is positive), subtract the
pointers and then cast the result to an unsigned integer, don't cast the
pointers to unsigned integers - the latter isn't the right way to do it
in C, and isn't LP64-clean.
#ifndef lint
static const char rcsid[] =
- "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.34 2003-02-19 08:01:36 guy Exp $ (LBL)";
+ "@(#) $Header: /tcpdump/master/tcpdump/print-tftp.c,v 1.35 2003-05-02 08:45:21 guy Exp $ (LBL)";
#endif
#ifdef HAVE_CONFIG_H
putchar('"');
/* Print the mode and any options */
- while ((p = strchr(p, '\0')) != NULL) {
- if (length <= ((unsigned)p - (unsigned)&tp->th_block))
+ while ((p = (const u_char *)strchr((const char *)p, '\0')) != NULL) {
+ if (length <= (u_int)(p - (const u_char *)&tp->th_block))
break;
p++;
if (*p != '\0') {