diff --git a/src/core/net/dnssd_server.cpp b/src/core/net/dnssd_server.cpp index c996c153a..91550dcf2 100644 --- a/src/core/net/dnssd_server.cpp +++ b/src/core/net/dnssd_server.cpp @@ -219,10 +219,10 @@ void Server::SendResponse(Header aHeader, error = aSocket.SendTo(aMessage, aMessageInfo); - FreeMessageOnError(&aMessage, error); - if (error != kErrorNone) { + // do not use `FreeMessageOnError()` to avoid null check on nonnull pointer + aMessage.Free(); LogWarn("failed to send DNS-SD reply: %s", ErrorToString(error)); } else diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index e71096f22..b277dfd10 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -1640,7 +1640,11 @@ void Mle::SendDelayedResponse(TxMessage &aMessage, const DelayedResponseMetadata } exit: - FreeMessageOnError(&aMessage, error); + if (error != kErrorNone) + { + // do not use `FreeMessageOnError()` to avoid null check on nonnull pointer + aMessage.Free(); + } } void Mle::RemoveDelayedDataResponseMessage(void)