misc/61336: traceroute doesn't work with more than 85 hops
Mike Hibler
mike at cs.utah.edu
Tue Jan 13 13:50:25 PST 2004
>Number: 61336
>Category: misc
>Synopsis: traceroute doesn't work with more than 85 hops
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Tue Jan 13 13:50:21 PST 2004
>Closed-Date:
>Last-Modified:
>Originator: Mike Hibler
>Release: 4.7-RELEASE
>Organization:
University of Utah
>Environment:
>Description:
Any combination of (nhops * nprobes per hop) > 255 will fail due to a sequence number placed in the packet as 8-bits but kept internally as 32-bits. So comparison
of what comes back in the packet (8-bits) with the internal counter (32-bits) fails.
With the default of 3 probes per hop, 85 * 3 == 255.
I know, I know, who gives a .... :-)
>How-To-Repeat:
Traceroute a host 86 hops away!
>Fix:
Ensure that the "check" performed upon reply only uses 8-bits of sequence,
as the "prepare" function does implicitly by using outdata->seq
1060c1060
< && (*proto->check)((u_char *)icp,seq))
---
> && (*proto->check)((u_char *)icp, (u_char)seq))
1072c1072
< && (*proto->check)(inner, seq))
---
> && (*proto->check)(inner, (u_char)seq))
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-bugs
mailing list