[coap] fix CoapSecure::Stop() accessing freed message instance (#6883)

This commit fixes an issue in `CoapSecure::Stop()` accessing an
already dequeued and freed `Message` instance (from the `for` loop
iteration trying to `GetNext()` message). The code in this commit
removes the head element one by one (`MessageQueue::GetHead()`)
until the queue becomes empty.
This commit is contained in:
Abtin Keshavarzian
2021-08-02 18:26:24 -07:00
committed by GitHub
parent c33df6f0ee
commit 974026b5f3
+3 -1
View File
@@ -84,9 +84,11 @@ exit:
void CoapSecure::Stop(void)
{
ot::Message *message;
mDtls.Close();
for (ot::Message *message = mTransmitQueue.GetHead(); message != nullptr; message = message->GetNext())
while ((message = mTransmitQueue.GetHead()) != nullptr)
{
mTransmitQueue.Dequeue(*message);
message->Free();