From aa4c559a3a7c52cdef8ca52f91e3e557190adee4 Mon Sep 17 00:00:00 2001 From: Baptiste Wicht Date: Mon, 26 Sep 2016 11:44:57 +0200 Subject: [PATCH] Safer checksum --- kernel/src/net/udp_layer.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/kernel/src/net/udp_layer.cpp b/kernel/src/net/udp_layer.cpp index ca7fb760..cf6be0fe 100644 --- a/kernel/src/net/udp_layer.cpp +++ b/kernel/src/net/udp_layer.cpp @@ -36,14 +36,14 @@ network::connection_handler connections; void compute_checksum(network::ethernet::packet& packet){ auto* ip_header = reinterpret_cast(packet.payload + packet.tag(1)); - auto* udp_header = reinterpret_cast(packet.payload + packet.index); + auto* udp_header = reinterpret_cast(packet.payload + packet.tag(2)); udp_header->checksum = 0; auto length = switch_endian_16(udp_header->length); // Accumulate the Payload - auto sum = network::checksum_add_bytes(packet.payload + packet.index, length); + auto sum = network::checksum_add_bytes(packet.payload + packet.tag(2), length); // Accumulate the IP addresses sum += network::checksum_add_bytes(&ip_header->source_ip, 8);