From 4e642e5d60fb55a67ca4df76624283fae06755cb Mon Sep 17 00:00:00 2001 From: Gabriel Ferreira Date: Sat, 5 Oct 2024 17:24:01 +0000 Subject: [PATCH] internet: Fix tcp flags check to determine packet type (TcpHeader::ACK | TcpHeader::ECE) was not correctly tested, resulting in an uninitialized packetType value --- src/internet/model/tcp-socket-base.cc | 29 +++++++++++++-------------- src/internet/model/tcp-socket-base.h | 3 ++- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/internet/model/tcp-socket-base.cc b/src/internet/model/tcp-socket-base.cc index 94355ae83..f61e8a3bd 100644 --- a/src/internet/model/tcp-socket-base.cc +++ b/src/internet/model/tcp-socket-base.cc @@ -2789,7 +2789,7 @@ TcpSocketBase::SendEmptyPacket(uint8_t flags) Ptr p = Create(); TcpHeader header; SequenceNumber32 s = m_tcb->m_nextTxSequence; - TcpPacketType_t packetType; + TcpPacketType_t packetType = INVALID; if (flags & TcpHeader::FIN) { @@ -2801,26 +2801,25 @@ TcpSocketBase::SendEmptyPacket(uint8_t flags) ++s; } - if (flags == TcpHeader::ACK) - { - packetType = TcpPacketType_t::PURE_ACK; - } - else if (flags == TcpHeader::RST) - { - packetType = TcpPacketType_t::RST; - } - else if (flags & TcpHeader::SYN) + if (flags & TcpHeader::SYN) { + packetType = TcpPacketType_t::SYN; if (flags & TcpHeader::ACK) { packetType = TcpPacketType_t::SYN_ACK; } - else - { - packetType = TcpPacketType_t::SYN; - } + } + else if (flags & TcpHeader::ACK) + { + packetType = TcpPacketType_t::PURE_ACK; } + if (flags & TcpHeader::RST) + { + packetType = TcpPacketType_t::RST; + } + + NS_ASSERT_MSG(packetType != TcpPacketType_t::INVALID, "Invalid TCP packet type"); AddSocketTags(p, IsEct(packetType)); header.SetFlags(flags); @@ -4791,7 +4790,7 @@ bool TcpSocketBase::IsEct(TcpPacketType_t packetType) const { NS_LOG_FUNCTION(this << packetType); - + NS_ASSERT_MSG(packetType != TcpPacketType_t::INVALID, "Invalid TCP packet type"); if (m_tcb->m_ecnState == TcpSocketState::ECN_DISABLED) { return false; diff --git a/src/internet/model/tcp-socket-base.h b/src/internet/model/tcp-socket-base.h index 89b14138a..c25b6b9b3 100644 --- a/src/internet/model/tcp-socket-base.h +++ b/src/internet/model/tcp-socket-base.h @@ -255,7 +255,8 @@ class TcpSocketBase : public TcpSocket FIN, RST, RE_XMT, - DATA + DATA, + INVALID }; // Set associated Node, TcpL4Protocol, RttEstimator to this socket