From 03fac0ff48c8152e9bcc8cfeed4a6eddb3b0e17f Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Wed, 26 Jun 2019 03:42:59 -0700 Subject: [PATCH] [message] adjust offset when cloning a message subset (#3944) --- src/core/common/message.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/core/common/message.cpp b/src/core/common/message.cpp index bc0fcc27e..e323986ba 100644 --- a/src/core/common/message.cpp +++ b/src/core/common/message.cpp @@ -637,6 +637,7 @@ Message *Message::Clone(uint16_t aLength) const { otError error = OT_ERROR_NONE; Message *messageCopy; + uint16_t offset; VerifyOrExit((messageCopy = GetMessagePool()->New(GetType(), GetReserved(), GetPriority())) != NULL, error = OT_ERROR_NO_BUFS); @@ -644,7 +645,9 @@ Message *Message::Clone(uint16_t aLength) const CopyTo(0, 0, aLength, *messageCopy); // Copy selected message information. - messageCopy->SetOffset(GetOffset()); + offset = GetOffset() < aLength ? GetOffset() : aLength; + messageCopy->SetOffset(offset); + messageCopy->SetSubType(GetSubType()); messageCopy->SetLinkSecurityEnabled(IsLinkSecurityEnabled()); #if OPENTHREAD_CONFIG_ENABLE_TIME_SYNC