From b0cf1534bb37a10bca78060db6570d3c48a0d815 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Fri, 1 Sep 2017 21:26:50 -0700 Subject: [PATCH] [operational-dataset] add additional TLV checks (#2159) Credit to OSS-Fuzz. --- src/core/meshcop/dataset_manager.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/meshcop/dataset_manager.cpp b/src/core/meshcop/dataset_manager.cpp index 4456569b4..a143feb96 100644 --- a/src/core/meshcop/dataset_manager.cpp +++ b/src/core/meshcop/dataset_manager.cpp @@ -464,6 +464,7 @@ otError DatasetManager::Set(Coap::Header &aHeader, Message &aMessage, const Ip6: // check mesh local prefix if (Tlv::GetTlv(aMessage, Tlv::kMeshLocalPrefix, sizeof(meshLocalPrefix), meshLocalPrefix) == OT_ERROR_NONE && + meshLocalPrefix.IsValid() && memcmp(meshLocalPrefix.GetMeshLocalPrefix(), netif.GetMle().GetMeshLocalPrefix(), meshLocalPrefix.GetLength())) { @@ -472,6 +473,7 @@ otError DatasetManager::Set(Coap::Header &aHeader, Message &aMessage, const Ip6: // check network master key if (Tlv::GetTlv(aMessage, Tlv::kNetworkMasterKey, sizeof(masterKey), masterKey) == OT_ERROR_NONE && + masterKey.IsValid() && memcmp(&masterKey.GetNetworkMasterKey(), &netif.GetKeyManager().GetMasterKey(), OT_MASTER_KEY_SIZE)) { doesAffectConnectivity = true;