mirror of
https://github.com/espressif/openthread.git
synced 2026-08-21 18:09:52 +00:00
Add bounds checks. (#1077)
This commit is contained in:
@@ -688,6 +688,7 @@ void Commissioner::HandleRelayReceive(Coap::Header &aHeader, Message &aMessage,
|
||||
VerifyOrExit(joinerRloc.IsValid(), error = kThreadError_Parse);
|
||||
|
||||
SuccessOrExit(error = Tlv::GetValueOffset(aMessage, Tlv::kJoinerDtlsEncapsulation, offset, length));
|
||||
VerifyOrExit(length <= aMessage.GetLength() - offset, error = kThreadError_Parse);
|
||||
|
||||
if (!mSecureCoapServer.IsConnectionActive())
|
||||
{
|
||||
|
||||
@@ -618,8 +618,9 @@ ThreadError Dhcp6Client::ProcessIaNa(Message &aMessage, uint16_t aOffset)
|
||||
VerifyOrExit(aMessage.Read(aOffset, sizeof(option), &option) == sizeof(option), error = kThreadError_Parse);
|
||||
|
||||
aOffset += sizeof(option);
|
||||
length = option.GetLength() - (sizeof(option) - sizeof(Dhcp6Option));
|
||||
|
||||
length = option.GetLength();
|
||||
VerifyOrExit(length <= aMessage.GetLength() - aOffset, error = kThreadError_Parse);
|
||||
|
||||
if ((optionOffset = FindOption(aMessage, aOffset, length, kOptionStatusCode)) > 0)
|
||||
{
|
||||
|
||||
@@ -360,6 +360,8 @@ ThreadError Dhcp6Server::ProcessIaNa(Message &aMessage, uint16_t aOffset, IaNa &
|
||||
aOffset += sizeof(aIaNa);
|
||||
length = aIaNa.GetLength() + sizeof(Dhcp6Option) - sizeof(IaNa);
|
||||
|
||||
VerifyOrExit(length <= aMessage.GetLength() - aOffset, error = kThreadError_Parse);
|
||||
|
||||
mPrefixAgentsMask = 0;
|
||||
|
||||
while (length > 0)
|
||||
|
||||
Reference in New Issue
Block a user