diff --git a/src/core/thread/network_data_leader_ftd.cpp b/src/core/thread/network_data_leader_ftd.cpp index b58a0b5cc..82e334801 100644 --- a/src/core/thread/network_data_leader_ftd.cpp +++ b/src/core/thread/network_data_leader_ftd.cpp @@ -237,8 +237,11 @@ void Leader::HandleCommissioningSet(Coap::Header &aHeader, Message &aMessage, co } else if (type == MeshCoP::Tlv::kCommissionerSessionId) { + MeshCoP::CommissionerSessionIdTlv *tlv = static_cast(cur); + + VerifyOrExit(tlv->IsValid()); + sessionId = tlv->GetCommissionerSessionId(); hasSessionId = true; - sessionId = static_cast(cur)->GetCommissionerSessionId(); } else {