UDP/IPv6 handling
Tom Pusateri
pusateri at bangj.com
Wed Oct 1 23:43:41 UTC 2014
Lots of embedded devices (like Cisco IP Phones) send TFTP requests with 0 checksums.
Tom
> On Oct 1, 2014, at 12:58 PM, Michael Tuexen <Michael.Tuexen at lurchi.franken.de> wrote:
>
> 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
> _______________________________________________
> freebsd-net at freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-net
> To unsubscribe, send any mail to "freebsd-net-unsubscribe at freebsd.org"
More information about the freebsd-net
mailing list