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)