[network-data] fix length overflow in ServiceTlv::IsValid() (#4855)

This commit is contained in:
Jonathan Hui
2020-04-17 21:19:22 -07:00
committed by GitHub
parent 68fc38865a
commit af4837d122
+3 -1
View File
@@ -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<uint16_t>(length) + sizeof(NetworkDataTlv) >=
CalculateSize(GetEnterpriseNumber(), GetServiceDataLength()));
}
/**