Comment # 4
on bug 10361
from Guy Harris
(In reply to Tom Phinney from comment #0)
> The dissector for UDP has been modified in recent versions to parse UDP PDUs
> (protocol data units) incorrectly, using the computed size of a conveying IP
> payload rather than the EXPLICIT length specified in the UDP header.
It *does* use the length in the UDP header.
> show that the UDP PDU length computation used to be:
> udph->uh_ulen = udph->uh_sum_cov = tvb_get_ntohs(tvb, offset+4);
And it still is.
There *is* no length in the UDPlite header:
https://tools.ietf.org/html/rfc3828
so it has to depend on the length from the IP header. If the IP dissector
isn't setting the reported length of the tvbuff it hands to the dissector it
calls by using the IP total length, then
> udph->uh_ulen = pinfo->iplen - pinfo->iphdrlen;
would work but
> udph->uh_ulen = tvb_reported_length(tvb);
wouldn't. (The diff in the bug appears to be backward; the first of those is
the *old* code and the latter is the *new* code.)
You are receiving this mail because:
- You are watching all bug changes.