diff --git a/src/core/net/ip6.cpp b/src/core/net/ip6.cpp index 4ef87cff4..303e03ec7 100644 --- a/src/core/net/ip6.cpp +++ b/src/core/net/ip6.cpp @@ -734,8 +734,9 @@ otError Ip6::HandleFragment(Message &aMessage, Netif *aNetif, MessageInfo &aMess for (message = mReassemblyList.GetHead(); message; message = message->GetNext()) { - VerifyOrExit(aMessage.Read(0, sizeof(headerBuffer), &headerBuffer) == sizeof(headerBuffer), + VerifyOrExit(message->Read(0, sizeof(headerBuffer), &headerBuffer) == sizeof(headerBuffer), error = OT_ERROR_PARSE); + if (message->GetDatagramTag() == fragmentHeader.GetIdentification() && headerBuffer.GetSource() == header.GetSource() && headerBuffer.GetDestination() == header.GetDestination()) {