From 9b0d3db228037402e4b632b7239b295c4a399c74 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Tue, 25 Jul 2023 09:13:45 -0700 Subject: [PATCH] [link-metrics] verify neighbor state when processing messages (#9311) --- src/core/thread/mle.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/thread/mle.cpp b/src/core/thread/mle.cpp index 1779a9dbe..5771186b5 100644 --- a/src/core/thread/mle.cpp +++ b/src/core/thread/mle.cpp @@ -3776,7 +3776,7 @@ void Mle::HandleLinkMetricsManagementRequest(RxInfo &aRxInfo) Log(kMessageReceive, kTypeLinkMetricsManagementRequest, aRxInfo.mMessageInfo.GetPeerAddr()); - VerifyOrExit(aRxInfo.mNeighbor != nullptr, error = kErrorInvalidState); + VerifyOrExit(aRxInfo.IsNeighborStateValid(), error = kErrorInvalidState); SuccessOrExit( error = Get().HandleManagementRequest(aRxInfo.mMessage, *aRxInfo.mNeighbor, status)); @@ -3798,7 +3798,7 @@ void Mle::HandleLinkMetricsManagementResponse(RxInfo &aRxInfo) Log(kMessageReceive, kTypeLinkMetricsManagementResponse, aRxInfo.mMessageInfo.GetPeerAddr()); - VerifyOrExit(aRxInfo.mNeighbor != nullptr, error = kErrorInvalidState); + VerifyOrExit(aRxInfo.IsNeighborStateValid(), error = kErrorInvalidState); error = Get().HandleManagementResponse(aRxInfo.mMessage, aRxInfo.mMessageInfo.GetPeerAddr()); @@ -3818,6 +3818,8 @@ void Mle::HandleLinkProbe(RxInfo &aRxInfo) Log(kMessageReceive, kTypeLinkProbe, aRxInfo.mMessageInfo.GetPeerAddr()); + VerifyOrExit(aRxInfo.IsNeighborStateValid(), error = kErrorInvalidState); + SuccessOrExit(error = Get().HandleLinkProbe(aRxInfo.mMessage, seriesId)); aRxInfo.mNeighbor->AggregateLinkMetrics(seriesId, LinkMetrics::SeriesInfo::kSeriesTypeLinkProbe, aRxInfo.mMessage.GetAverageLqi(), aRxInfo.mMessage.GetAverageRss());