diff --git a/fuzz/C++/fuzz_processCDRMsg/fuzz_processCDRMsg_seed_corpus/input_issue3236 b/fuzz/C++/fuzz_processCDRMsg/fuzz_processCDRMsg_seed_corpus/input_issue3236 new file mode 100644 index 00000000000..8e0df982d24 Binary files /dev/null and b/fuzz/C++/fuzz_processCDRMsg/fuzz_processCDRMsg_seed_corpus/input_issue3236 differ diff --git a/src/cpp/rtps/messages/MessageReceiver.cpp b/src/cpp/rtps/messages/MessageReceiver.cpp index 9c005f986b2..71f5da7b51b 100644 --- a/src/cpp/rtps/messages/MessageReceiver.cpp +++ b/src/cpp/rtps/messages/MessageReceiver.cpp @@ -1054,6 +1054,13 @@ bool MessageReceiver::proc_Submsg_Heartbeat( SequenceNumber_t lastSN; CDRMessage::readSequenceNumber(msg, &firstSN); CDRMessage::readSequenceNumber(msg, &lastSN); + + SequenceNumber_t zeroSN; + if (firstSN <= zeroSN) + { + logWarning(RTPS_MSG_IN, IDSTRING "Invalid Heartbeat received (" << firstSN << " <= 0), ignoring"); + return false; + } if (lastSN < firstSN && lastSN != firstSN - 1) { logWarning(RTPS_MSG_IN, IDSTRING "Invalid Heartbeat received (" << firstSN << ") - (" <<