]> git.ipfire.org Git - thirdparty/mtr.git/commitdiff
fix placement of zeros when running alternate udp checksum
authorrussor <russor@whatsapp.com>
Mon, 18 Apr 2016 20:47:14 +0000 (13:47 -0700)
committerrussor <russor@whatsapp.com>
Mon, 18 Apr 2016 20:47:14 +0000 (13:47 -0700)
net.c

diff --git a/net.c b/net.c
index bdc5f85e7a544ace8cdeb7c8a28a33f25ef71d14..05d707e69ef0b8dd4c5988ffa3852501b27111c2 100644 (file)
--- a/net.c
+++ b/net.c
@@ -259,7 +259,8 @@ int udp_checksum(void *pheader, void *udata, int psize, int dsize, int alt_check
   char csumpacket[tsize];
   memset(csumpacket, (unsigned char) abs(bitpattern), abs(tsize));
   if (alt_checksum && dsize >= 2) {
-    csumpacket[psize] = csumpacket[psize + 1] = 0;
+    csumpacket[psize + sizeof(struct UDPHeader)] = 0;
+    csumpacket[psize + sizeof(struct UDPHeader) + 1] = 0;
   }
 
   struct UDPv4PHeader *prepend = (struct UDPv4PHeader *) csumpacket;