Author: markj
Date: Wed Jun 26 20:11:52 2019
New Revision: 349438
URL: https://svnweb.freebsd.org/changeset/base/349438

Log:
  Avoid a divide-by-zero when bad checksum counters overflow.
  
  A mixture of IP or UDP packets with valid and invalid checksum could
  cause {ip,udp}_packets_bad_checksum to wrap around to 0, resulting
  in a division by zero.
  
  This is packet.c rev. 1.27 from OpenBSD.
  
  admbugs:      552
  Obtained from:        OpenBSD
  MFC after:    3 days

Modified:
  head/sbin/dhclient/packet.c

Modified: head/sbin/dhclient/packet.c
==============================================================================
--- head/sbin/dhclient/packet.c Wed Jun 26 20:07:16 2019        (r349437)
+++ head/sbin/dhclient/packet.c Wed Jun 26 20:11:52 2019        (r349438)
@@ -183,7 +183,7 @@ decode_udp_ip_header(unsigned char *buf, int bufix, st
        ip_packets_seen++;
        if (wrapsum(checksum(buf + bufix, ip_len, 0)) != 0) {
                ip_packets_bad_checksum++;
-               if (ip_packets_seen > 4 &&
+               if (ip_packets_seen > 4 && ip_packets_bad_checksum != 0 &&
                    (ip_packets_seen / ip_packets_bad_checksum) < 2) {
                        note("%d bad IP checksums seen in %d packets",
                            ip_packets_bad_checksum, ip_packets_seen);
@@ -235,7 +235,7 @@ decode_udp_ip_header(unsigned char *buf, int bufix, st
        udp_packets_seen++;
        if (usum && usum != sum) {
                udp_packets_bad_checksum++;
-               if (udp_packets_seen > 4 &&
+               if (udp_packets_seen > 4 && udp_packets_bad_checksum != 0 &&
                    (udp_packets_seen / udp_packets_bad_checksum) < 2) {
                        note("%d bad udp checksums in %d packets",
                            udp_packets_bad_checksum, udp_packets_seen);
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to