[dataset] add message length checks when processing MGMT_SET.req (#2671)

Credit to OSS-Fuzz.
This commit is contained in:
Jonathan Hui
2018-04-23 09:14:22 -07:00
committed by GitHub
parent 59de9f34ad
commit 1fff473335
+3 -1
View File
@@ -266,6 +266,8 @@ otError DatasetManager::Set(Coap::Header &aHeader, Message &aMessage, const Ip6:
} OT_TOOL_PACKED_END data;
aMessage.Read(offset, sizeof(Tlv), &data.tlv);
VerifyOrExit(data.tlv.GetLength() <= sizeof(data.value), state = StateTlv::kReject);
aMessage.Read(offset + sizeof(Tlv), data.tlv.GetLength(), data.value);
switch (data.tlv.GetType())
@@ -291,7 +293,7 @@ otError DatasetManager::Set(Coap::Header &aHeader, Message &aMessage, const Ip6:
// fall through
default:
dataset.Set(data.tlv);
VerifyOrExit(dataset.Set(data.tlv) == OT_ERROR_NONE, state = StateTlv::kReject);
break;
}