diff --git a/src/core/thread/network_data_tlvs.hpp b/src/core/thread/network_data_tlvs.hpp index b25309f3e..afcfc34d4 100644 --- a/src/core/thread/network_data_tlvs.hpp +++ b/src/core/thread/network_data_tlvs.hpp @@ -1015,7 +1015,9 @@ public: uint8_t length = GetLength(); return (length >= sizeof(mFlagsServiceId)) && - (length >= kMinLength + (IsThreadEnterprise() ? 0 : sizeof(uint32_t))) && (length >= GetFieldsLength()); + (length >= kMinLength + (IsThreadEnterprise() ? 0 : sizeof(uint32_t))) && + (static_cast(length) + sizeof(NetworkDataTlv) >= + CalculateSize(GetEnterpriseNumber(), GetServiceDataLength())); } /**