summarylogtreecommitdiffstats
path: root/fix-checksum-calculation.patch
diff options
context:
space:
mode:
authorTimo Sarawinski2020-02-07 17:16:53 +0100
committerTimo Sarawinski2020-02-07 17:16:53 +0100
commit726c32ac123783425b4a66f702713cd97a27a902 (patch)
treebec6a5acd284980c6ae3a0b0de3a8f802bdad24b /fix-checksum-calculation.patch
downloadaur-726c32ac123783425b4a66f702713cd97a27a902.tar.gz
first release
Diffstat (limited to 'fix-checksum-calculation.patch')
-rw-r--r--fix-checksum-calculation.patch41
1 files changed, 41 insertions, 0 deletions
diff --git a/fix-checksum-calculation.patch b/fix-checksum-calculation.patch
new file mode 100644
index 000000000000..66d39bf8bc05
--- /dev/null
+++ b/fix-checksum-calculation.patch
@@ -0,0 +1,41 @@
+From 93b5ace42268160ebbfff4c61818fb15fa2d9b99 Mon Sep 17 00:00:00 2001
+From: Sebastian Woelke <Sebastian.Woelke@posteo.de>
+Date: Thu, 24 Aug 2017 14:41:50 +0200
+Subject: [PATCH] Fix checksum calculation
+
+---
+ mcproxy/src/utils/mroute_socket.cpp | 14 ++++++++++----
+ 1 file changed, 10 insertions(+), 4 deletions(-)
+
+diff --git a/src/utils/mroute_socket.cpp b/src/utils/mroute_socket.cpp
+index 61289ddb..3a553591 100644
+--- a/src/utils/mroute_socket.cpp
++++ b/src/utils/mroute_socket.cpp
+@@ -157,17 +157,23 @@ u_int16_t mroute_socket::calc_checksum(const unsigned char* buf, int buf_size) c
+
+ u_int16_t* b = (u_int16_t*)buf;
+ int sum = 0;
++ int csum;
+
+ for (int i = 0; i < buf_size / 2; i++) {
+- ADD_SIGNED_NUM_U16(sum, b[i]);
+- //sum +=b[i];
++ sum +=b[i];
+ }
+
+ if (buf_size % 2 == 1) {
+- //sum += buf[buf_size-1];
+- ADD_SIGNED_NUM_U16(sum, buf[buf_size - 1]);
++ sum += buf[buf_size-1];
+ }
+
++ // fold checksum
++ csum = sum & 0xFFFF;
++ sum = sum >> 16;
++ sum += csum;
++ // fold again in case of overflow.
++ sum += sum >> 16;
++
+ return ~sum;
+ }
+