UDP/IPv6 handling
Michael Tuexen
Michael.Tuexen at lurchi.franken.de
Wed Oct 1 16:59:05 UTC 2014
Dear all,
in udp6_input() we have the following code:
if (nxt == IPPROTO_UDP && plen != ulen) {
UDPSTAT_INC(udps_badlen);
goto badunlocked;
}
/*
* Checksum extended UDP header and data.
*/
if (uh->uh_sum == 0) {
if (ulen > plen || ulen < sizeof(struct udphdr)) {
UDPSTAT_INC(udps_nosum);
goto badunlocked;
}
}
I'm trying to understand the UDP code path...
So (ulen > plen) can't be true. I'm wondering why do we only check the ulen is not too
short only in the case when the UDP checksum is zero. A zero checksum should also never happen.
I think we should check for ulen < sizeof(struct udphdr) in any case.
Opinions?
Best regards
Michael
More information about the freebsd-net
mailing list