From ef4ec92aab0b5af4774f863d415ef53b9a0e7416 Mon Sep 17 00:00:00 2001 From: Tommaso Pecorella Date: Fri, 18 Aug 2023 18:34:03 +0200 Subject: [PATCH] internet: (fixes #941) fix re-serialization of UDP headers --- src/internet/model/udp-header.cc | 7 +++---- src/internet/model/udp-header.h | 7 ++++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/internet/model/udp-header.cc b/src/internet/model/udp-header.cc index 1c7a1052d..3d6c49011 100644 --- a/src/internet/model/udp-header.cc +++ b/src/internet/model/udp-header.cc @@ -33,7 +33,6 @@ NS_OBJECT_ENSURE_REGISTERED(UdpHeader); UdpHeader::UdpHeader() : m_sourcePort(0xfffd), m_destinationPort(0xfffd), - m_payloadSize(0), m_checksum(0), m_calcChecksum(false), m_goodChecksum(true) @@ -150,7 +149,7 @@ UdpHeader::ForceChecksum(uint16_t checksum) void UdpHeader::ForcePayloadSize(uint16_t payloadSize) { - m_payloadSize = payloadSize; + m_forcedPayloadSize = payloadSize; } TypeId @@ -189,13 +188,13 @@ UdpHeader::Serialize(Buffer::Iterator start) const i.WriteHtonU16(m_sourcePort); i.WriteHtonU16(m_destinationPort); - if (m_payloadSize == 0) + if (m_forcedPayloadSize == 0) { i.WriteHtonU16(start.GetSize()); } else { - i.WriteHtonU16(m_payloadSize); + i.WriteHtonU16(m_forcedPayloadSize); } if (m_checksum == 0) diff --git a/src/internet/model/udp-header.h b/src/internet/model/udp-header.h index 65a46bae8..43fba6e6a 100644 --- a/src/internet/model/udp-header.h +++ b/src/internet/model/udp-header.h @@ -167,9 +167,10 @@ class UdpHeader : public Header * \returns the checksum */ uint16_t CalculateHeaderChecksum(uint16_t size) const; - uint16_t m_sourcePort; //!< Source port - uint16_t m_destinationPort; //!< Destination port - uint16_t m_payloadSize; //!< Payload size + uint16_t m_sourcePort; //!< Source port + uint16_t m_destinationPort; //!< Destination port + uint16_t m_payloadSize{0}; //!< Payload size + uint16_t m_forcedPayloadSize{0}; //!< Payload size (forced) Address m_source; //!< Source IP address Address m_destination; //!< Destination IP address