diff --git a/src/core/common/message.cpp b/src/core/common/message.cpp index ae623bc40..9c402022d 100644 --- a/src/core/common/message.cpp +++ b/src/core/common/message.cpp @@ -331,6 +331,8 @@ otError Message::SetLength(uint16_t aLength) uint16_t totalLengthCurrent = GetReserved() + GetLength(); int bufs = 0; + VerifyOrExit(totalLengthRequest >= GetReserved(), error = OT_ERROR_INVALID_ARGS); + if (totalLengthRequest > kHeadBufferDataSize) { bufs = (((totalLengthRequest - kHeadBufferDataSize) - 1) / kBufferDataSize) + 1;