From 51bb4be6c448a1ba6c9647f10359f4d5268ec91a Mon Sep 17 00:00:00 2001 From: kangping Date: Thu, 23 Jan 2020 02:05:22 +0800 Subject: [PATCH] [meshcop] fix premature free of finalize message (#4487) This commit fixes a bug that the finalize message will be prematurely freed if the joiner is started at the second time without waiting for the finish of the first initiation. --- src/core/meshcop/joiner.cpp | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/src/core/meshcop/joiner.cpp b/src/core/meshcop/joiner.cpp index f94ad7933..0f623003a 100644 --- a/src/core/meshcop/joiner.cpp +++ b/src/core/meshcop/joiner.cpp @@ -163,11 +163,11 @@ void Joiner::Finish(otError aError) case OT_JOINER_STATE_DISCOVER: Get().Stop(); - FreeJoinerFinalizeMessage(); break; } SetState(OT_JOINER_STATE_IDLE); + FreeJoinerFinalizeMessage(); if (mCallback) { @@ -450,11 +450,13 @@ exit: void Joiner::FreeJoinerFinalizeMessage(void) { - if (mFinalizeMessage != NULL) - { - mFinalizeMessage->Free(); - mFinalizeMessage = NULL; - } + VerifyOrExit(mState == OT_JOINER_STATE_IDLE && mFinalizeMessage != NULL); + + mFinalizeMessage->Free(); + mFinalizeMessage = NULL; + +exit: + return; } void Joiner::SendJoinerFinalize(void)