diff --git a/src/core/thread/mle_router.cpp b/src/core/thread/mle_router.cpp index 66302aa38..06433ce32 100644 --- a/src/core/thread/mle_router.cpp +++ b/src/core/thread/mle_router.cpp @@ -2882,7 +2882,10 @@ void MleRouter::HandleDataRequest(RxInfo &aRxInfo) OT_FALL_THROUGH; case kErrorNotFound: - tlvs[numTlvs++] = Tlv::kActiveDataset; + if (numTlvs < sizeof(tlvs)) + { + tlvs[numTlvs++] = Tlv::kActiveDataset; + } break; default: @@ -2901,7 +2904,10 @@ void MleRouter::HandleDataRequest(RxInfo &aRxInfo) OT_FALL_THROUGH; case kErrorNotFound: - tlvs[numTlvs++] = Tlv::kPendingDataset; + if (numTlvs < sizeof(tlvs)) + { + tlvs[numTlvs++] = Tlv::kPendingDataset; + } break; default: