From 93f58a757a0cee0f2fd4c2645f868ad8878d9134 Mon Sep 17 00:00:00 2001 From: g0dil <g0dil@wiback.org> Date: Thu, 5 Mar 2009 15:05:46 +0000 Subject: [PATCH] Packets/DefaultBundle: ICMPv6Packet skips checksum calculation when IPv6 header is missing --- Packets/DefaultBundle/ICMPv6Packet.cc | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/Packets/DefaultBundle/ICMPv6Packet.cc b/Packets/DefaultBundle/ICMPv6Packet.cc index dc8eea1a1..0556fec61 100644 --- a/Packets/DefaultBundle/ICMPv6Packet.cc +++ b/Packets/DefaultBundle/ICMPv6Packet.cc @@ -34,10 +34,15 @@ namespace { registerICMPv6Packet (58); } -prefix_ boost::uint16_t senf::ICMPv6PacketParser::calcChecksum() const { +prefix_ boost::uint16_t senf::ICMPv6PacketParser::calcChecksum() + const +{ senf::IpChecksum summer; senf::IPv6Packet ipv6 (packet().rfind<senf::IPv6Packet>(senf::nothrow)); + + if (! ipv6) + return 0u; summer.feed( ipv6->source().i(), ipv6->source().i() + senf::IPv6Packet::Parser::source_t::fixed_bytes ); -- GitLab