From b25e0bb4c8c42c0313a4f971795e56cb31edcf0d Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Thu, 17 Jan 2019 07:33:02 -0800 Subject: [PATCH] [coap] add NULL check in Message::Clone() (#3469) --- src/core/coap/coap_message.cpp | 12 ++++++++++++ src/core/coap/coap_message.hpp | 9 +-------- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/core/coap/coap_message.cpp b/src/core/coap/coap_message.cpp index 44ea69cd7..f11e00416 100644 --- a/src/core/coap/coap_message.cpp +++ b/src/core/coap/coap_message.cpp @@ -365,6 +365,18 @@ void Message::SetDefaultResponseHeader(const Message &aRequest) SetToken(aRequest.GetToken(), aRequest.GetTokenLength()); } +Message *Message::Clone(uint16_t aLength) const +{ + Message *message = static_cast(ot::Message::Clone(aLength)); + + VerifyOrExit(message != NULL); + + memcpy(&message->GetHelpData(), &GetHelpData(), sizeof(GetHelpData())); + +exit: + return message; +} + #if OPENTHREAD_ENABLE_APPLICATION_COAP const char *Message::CodeToString(void) const { diff --git a/src/core/coap/coap_message.hpp b/src/core/coap/coap_message.hpp index 428e236c4..5e3d4f636 100644 --- a/src/core/coap/coap_message.hpp +++ b/src/core/coap/coap_message.hpp @@ -491,14 +491,7 @@ public: * @returns A pointer to the message or NULL if insufficient message buffers are available. * */ - Message *Clone(uint16_t aLength) const - { - Message *message = static_cast(ot::Message::Clone(aLength)); - - memcpy(&message->GetHelpData(), &GetHelpData(), sizeof(GetHelpData())); - - return message; - } + Message *Clone(uint16_t aLength) const; /** * This method creates a copy of the message.