diff --git a/src/core/meshcop/joiner.cpp b/src/core/meshcop/joiner.cpp index 280f9811b..0173940aa 100644 --- a/src/core/meshcop/joiner.cpp +++ b/src/core/meshcop/joiner.cpp @@ -249,7 +249,7 @@ void Joiner::HandleDiscoverResult(Mle::DiscoverScanner::ScanResult *aResult) { VerifyOrExit(mState == kStateDiscover); - if (aResult != nullptr && aResult->mJoinerUdpPort > 0) + if (aResult != nullptr) { SaveDiscoveredJoinerRouter(*aResult); } @@ -270,9 +270,11 @@ void Joiner::SaveDiscoveredJoinerRouter(const Mle::DiscoverScanner::ScanResult & { uint8_t priority; bool doesAllowAny; - JoinerRouter *end = GetArrayEnd(mJoinerRouters); + JoinerRouter *end; JoinerRouter *entry; + VerifyOrExit(aResult.mJoinerUdpPort > 0); + doesAllowAny = AsCoreType(&aResult.mSteeringData).PermitsAllJoiners(); LogInfo("Joiner discover network: %s, pan:0x%04x, port:%d, chan:%d, rssi:%d, allow-any:%s", @@ -284,6 +286,8 @@ void Joiner::SaveDiscoveredJoinerRouter(const Mle::DiscoverScanner::ScanResult & // We keep the list sorted based on priority. Find the place to // add the new result. + end = GetArrayEnd(mJoinerRouters); + for (entry = &mJoinerRouters[0]; entry < end; entry++) { if (priority > entry->mPriority)