[message] change MoveOffset() to return void (#4949)

This commit is contained in:
Jonathan Hui
2020-05-13 10:16:19 -07:00
parent 1ce5064832
commit 03d65251cb
13 changed files with 30 additions and 41 deletions
+1 -1
View File
@@ -264,7 +264,7 @@ otError Message::ParseHeader(void)
VerifyOrExit(iterator.mNextOptionOffset > 0, error = OT_ERROR_PARSE);
GetHelpData().mHeaderLength = iterator.mNextOptionOffset - GetHelpData().mHeaderOffset;
IgnoreError(MoveOffset(GetHelpData().mHeaderLength));
MoveOffset(GetHelpData().mHeaderLength);
exit:
return error;
+1 -8
View File
@@ -308,18 +308,11 @@ uint8_t Message::GetBufferCount(void) const
return rval;
}
otError Message::MoveOffset(int aDelta)
void Message::MoveOffset(int aDelta)
{
otError error = OT_ERROR_NONE;
OT_ASSERT(GetOffset() + aDelta <= GetLength());
VerifyOrExit(GetOffset() + aDelta <= GetLength(), error = OT_ERROR_INVALID_ARGS);
mBuffer.mHead.mInfo.mOffset += static_cast<int16_t>(aDelta);
OT_ASSERT(mBuffer.mHead.mInfo.mOffset <= GetLength());
exit:
return error;
}
void Message::SetOffset(uint16_t aOffset)
+1 -4
View File
@@ -286,11 +286,8 @@ public:
*
* @param[in] aDelta The number of bytes to move the current offset, which may be positive or negative.
*
* @retval OT_ERROR_NONE Successfully moved the byte offset.
* @retval OT_ERROR_INVALID_ARGS The resulting byte offset is not within the existing message.
*
*/
otError MoveOffset(int aDelta);
void MoveOffset(int aDelta);
/**
* This method sets the byte offset within the message.
+1 -1
View File
@@ -636,7 +636,7 @@ int Dtls::HandleMbedtlsReceive(unsigned char *aBuf, size_t aLength)
}
rval = mReceiveMessage->Read(mReceiveMessage->GetOffset(), static_cast<uint16_t>(aLength), aBuf);
IgnoreError(mReceiveMessage->MoveOffset(rval));
mReceiveMessage->MoveOffset(rval);
exit:
return rval;
+1 -1
View File
@@ -419,7 +419,7 @@ void Dhcp6Client::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aM
Dhcp6Header header;
VerifyOrExit(aMessage.Read(aMessage.GetOffset(), sizeof(header), &header) == sizeof(header), OT_NOOP);
IgnoreError(aMessage.MoveOffset(sizeof(header)));
aMessage.MoveOffset(sizeof(header));
if ((header.GetType() == kTypeReply) && (!memcmp(header.GetTransactionId(), mTransactionId, kTransactionIdSize)))
{
+1 -1
View File
@@ -188,7 +188,7 @@ void Dhcp6Server::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aM
otIp6Address dst = aMessageInfo.mPeerAddr;
VerifyOrExit(aMessage.Read(aMessage.GetOffset(), sizeof(header), &header) == sizeof(header), OT_NOOP);
IgnoreError(aMessage.MoveOffset(sizeof(header)));
aMessage.MoveOffset(sizeof(header));
// discard if not solicit type
VerifyOrExit((header.GetType() == kTypeSolicit), OT_NOOP);
+1 -1
View File
@@ -479,7 +479,7 @@ void Client::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessag
!responseHeader.IsTruncationFlagSet(),
OT_NOOP);
IgnoreError(aMessage.MoveOffset(sizeof(responseHeader)));
aMessage.MoveOffset(sizeof(responseHeader));
offset = aMessage.GetOffset();
VerifyOrExit((message = FindRelatedQuery(responseHeader, queryMetadata)) != NULL, OT_NOOP);
+1 -1
View File
@@ -158,7 +158,7 @@ otError Icmp::HandleMessage(Message &aMessage, MessageInfo &aMessageInfo)
SuccessOrExit(error = HandleEchoRequest(aMessage, aMessageInfo));
}
IgnoreError(aMessage.MoveOffset(sizeof(icmp6Header)));
aMessage.MoveOffset(sizeof(icmp6Header));
for (IcmpHandler *handler = mHandlers.GetHead(); handler; handler = handler->GetNext())
{
+5 -6
View File
@@ -578,7 +578,7 @@ otError Ip6::HandleOptions(Message &aMessage, Header &aHeader, bool &aForward)
VerifyOrExit(endOffset <= aMessage.GetLength(), error = OT_ERROR_PARSE);
IgnoreError(aMessage.MoveOffset(sizeof(optionHeader)));
aMessage.MoveOffset(sizeof(optionHeader));
while (aMessage.GetOffset() < endOffset)
{
@@ -587,7 +587,7 @@ otError Ip6::HandleOptions(Message &aMessage, Header &aHeader, bool &aForward)
if (optionHeader.GetType() == OptionPad1::kType)
{
IgnoreError(aMessage.MoveOffset(sizeof(OptionPad1)));
aMessage.MoveOffset(sizeof(OptionPad1));
continue;
}
@@ -621,7 +621,7 @@ otError Ip6::HandleOptions(Message &aMessage, Header &aHeader, bool &aForward)
break;
}
IgnoreError(aMessage.MoveOffset(sizeof(optionHeader) + optionHeader.GetLength()));
aMessage.MoveOffset(sizeof(optionHeader) + optionHeader.GetLength());
}
exit:
@@ -736,8 +736,7 @@ otError Ip6::HandleFragment(Message &aMessage, Netif *aNetif, MessageInfo &aMess
if (fragmentHeader.GetOffset() == 0 && !fragmentHeader.IsMoreFlagSet())
{
isFragmented = false;
error = aMessage.MoveOffset(sizeof(fragmentHeader));
aMessage.MoveOffset(sizeof(fragmentHeader));
ExitNow();
}
@@ -936,7 +935,7 @@ otError Ip6::HandleFragment(Message &aMessage, Netif *aNetif, MessageInfo &aMess
VerifyOrExit(fragmentHeader.GetOffset() == 0 && !fragmentHeader.IsMoreFlagSet(), error = OT_ERROR_DROP);
IgnoreError(aMessage.MoveOffset(sizeof(fragmentHeader)));
aMessage.MoveOffset(sizeof(fragmentHeader));
exit:
return error;
+1 -1
View File
@@ -320,7 +320,7 @@ otError Udp::HandleMessage(Message &aMessage, MessageInfo &aMessageInfo)
VerifyOrExit(aMessage.Read(aMessage.GetOffset(), sizeof(udpHeader), &udpHeader) == sizeof(udpHeader),
error = OT_ERROR_PARSE);
IgnoreError(aMessage.MoveOffset(sizeof(udpHeader)));
aMessage.MoveOffset(sizeof(udpHeader));
aMessageInfo.mPeerPort = udpHeader.GetSourcePort();
aMessageInfo.mSockPort = udpHeader.GetDestinationPort();
+9 -9
View File
@@ -418,7 +418,7 @@ otError Lowpan::Compress(Message & aMessage,
headerDepth++;
IgnoreError(aMessage.MoveOffset(sizeof(ip6Header)));
aMessage.MoveOffset(sizeof(ip6Header));
nextHeader = static_cast<uint8_t>(ip6Header.GetNextHeader());
@@ -478,7 +478,7 @@ otError Lowpan::CompressExtensionHeader(Message &aMessage, BufferWriter &aBuf, u
VerifyOrExit(aMessage.Read(aMessage.GetOffset(), sizeof(extHeader), &extHeader) == sizeof(extHeader),
error = OT_ERROR_PARSE);
IgnoreError(aMessage.MoveOffset(sizeof(extHeader)));
aMessage.MoveOffset(sizeof(extHeader));
tmpByte = kExtHdrDispatch | kExtHdrEidHbh;
@@ -545,7 +545,7 @@ otError Lowpan::CompressExtensionHeader(Message &aMessage, BufferWriter &aBuf, u
SuccessOrExit(error = buf.Write(static_cast<uint8_t>(len)));
SuccessOrExit(error = buf.Write(aMessage, static_cast<uint8_t>(len)));
IgnoreError(aMessage.MoveOffset(len + padLength));
aMessage.MoveOffset(len + padLength);
exit:
if (error == OT_ERROR_NONE)
@@ -602,7 +602,7 @@ otError Lowpan::CompressUdp(Message &aMessage, BufferWriter &aBuf)
SuccessOrExit(error = buf.Write(reinterpret_cast<uint8_t *>(&udpHeader) + Ip6::UdpHeader::GetChecksumOffset(), 2));
IgnoreError(aMessage.MoveOffset(sizeof(udpHeader)));
aMessage.MoveOffset(sizeof(udpHeader));
exit:
if (error == OT_ERROR_NONE)
@@ -976,11 +976,11 @@ int Lowpan::DecompressExtensionHeader(Message &aMessage, const uint8_t *aBuf, ui
hdr[1] = BitVectorBytes(sizeof(hdr) + len) - 1;
SuccessOrExit(aMessage.Append(hdr, sizeof(hdr)));
IgnoreError(aMessage.MoveOffset(sizeof(hdr)));
aMessage.MoveOffset(sizeof(hdr));
// payload
SuccessOrExit(aMessage.Append(cur, len));
IgnoreError(aMessage.MoveOffset(len));
aMessage.MoveOffset(len);
cur += len;
// The RFC6282 says: "The trailing Pad1 or PadN option MAY be elided by the compressor.
@@ -1001,7 +1001,7 @@ int Lowpan::DecompressExtensionHeader(Message &aMessage, const uint8_t *aBuf, ui
SuccessOrExit(aMessage.Append(&optionPadN, padLength));
}
IgnoreError(aMessage.MoveOffset(padLength));
aMessage.MoveOffset(padLength);
}
error = OT_ERROR_NONE;
@@ -1094,7 +1094,7 @@ int Lowpan::DecompressUdpHeader(Message &aMessage, const uint8_t *aBuf, uint16_t
}
VerifyOrExit(aMessage.Append(&udpHeader, sizeof(udpHeader)) == OT_ERROR_NONE, headerLen = -1);
IgnoreError(aMessage.MoveOffset(sizeof(udpHeader)));
aMessage.MoveOffset(sizeof(udpHeader));
exit:
return headerLen;
@@ -1125,7 +1125,7 @@ int Lowpan::Decompress(Message & aMessage,
remaining -= rval;
SuccessOrExit(aMessage.Append(&ip6Header, sizeof(ip6Header)));
SuccessOrExit(aMessage.MoveOffset(sizeof(ip6Header)));
aMessage.MoveOffset(sizeof(ip6Header));
while (compressed)
{
+2 -2
View File
@@ -1153,7 +1153,7 @@ void MeshForwarder::HandleFragment(const uint8_t * aFrame,
VerifyOrExit(message != NULL, error = OT_ERROR_DROP);
message->Write(message->GetOffset(), aFrameLength, aFrame);
IgnoreError(message->MoveOffset(aFrameLength));
message->MoveOffset(aFrameLength);
message->AddRss(aLinkInfo.mRss);
message->SetTimeout(kReassemblyTimeout);
}
@@ -1274,7 +1274,7 @@ otError MeshForwarder::FrameToMessage(const uint8_t * aFrame,
SuccessOrExit(error = aMessage->SetLength(aMessage->GetLength() + aFrameLength));
aMessage->Write(aMessage->GetOffset(), aFrameLength, aFrame);
IgnoreError(aMessage->MoveOffset(aFrameLength));
aMessage->MoveOffset(aFrameLength);
exit:
return error;
+5 -5
View File
@@ -2557,7 +2557,7 @@ otError Mle::SendMessage(Message &aMessage, const Ip6::Address &aDestination)
length = aMessage.Read(aMessage.GetOffset(), sizeof(buf), buf);
aesCcm.Payload(buf, buf, length, true);
aMessage.Write(aMessage.GetOffset(), length, buf);
IgnoreError(aMessage.MoveOffset(length));
aMessage.MoveOffset(length);
}
tagLength = sizeof(tag);
@@ -2630,7 +2630,7 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn
if (header.GetSecuritySuite() == Header::kNoSecurity)
{
IgnoreError(aMessage.MoveOffset(header.GetLength()));
aMessage.MoveOffset(header.GetLength());
switch (header.GetCommand())
{
@@ -2667,7 +2667,7 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn
VerifyOrExit(aMessage.GetOffset() + header.GetLength() + sizeof(messageTag) <= aMessage.GetLength(),
error = OT_ERROR_PARSE);
IgnoreError(aMessage.MoveOffset(header.GetLength() - 1));
aMessage.MoveOffset(header.GetLength() - 1);
aMessage.Read(aMessage.GetLength() - sizeof(messageTag), sizeof(messageTag), messageTag);
SuccessOrExit(error = aMessage.SetLength(aMessage.GetLength() - sizeof(messageTag)));
@@ -2695,7 +2695,7 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn
#ifndef FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
aMessage.Write(aMessage.GetOffset(), length, buf);
#endif
IgnoreError(aMessage.MoveOffset(length));
aMessage.MoveOffset(length);
}
tagLength = sizeof(tag);
@@ -2712,7 +2712,7 @@ void Mle::HandleUdpReceive(Message &aMessage, const Ip6::MessageInfo &aMessageIn
aMessage.SetOffset(mleOffset);
aMessage.Read(aMessage.GetOffset(), sizeof(command), &command);
IgnoreError(aMessage.MoveOffset(sizeof(command)));
aMessage.MoveOffset(sizeof(command));
switch (mRole)
{