mirror of
https://github.com/espressif/openthread.git
synced 2026-07-31 16:17:47 +00:00
[network-data] check serverTlv data length before parsing (#6052)
This commit adds a check in `GetBackboneRouterPrimary()` to verify that the server sub-TLV data length is larger than a expected minimum before casting it to `BackboneRouterServerData` and parsing/reading the info.
This commit is contained in:
@@ -110,8 +110,14 @@ otError LeaderBase::GetBackboneRouterPrimary(BackboneRouter::BackboneRouterConfi
|
||||
for (const NetworkDataTlv *start = serviceTlv->GetSubTlvs();
|
||||
(serverTlv = FindTlv<ServerTlv>(start, serviceTlv->GetNext())) != nullptr; start = serverTlv->GetNext())
|
||||
{
|
||||
const BackboneRouterServerData *serverData =
|
||||
reinterpret_cast<const BackboneRouterServerData *>(serverTlv->GetServerData());
|
||||
const BackboneRouterServerData *serverData;
|
||||
|
||||
if (serverTlv->GetServerDataLength() < sizeof(BackboneRouterServerData))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
serverData = reinterpret_cast<const BackboneRouterServerData *>(serverTlv->GetServerData());
|
||||
|
||||
if (rvalServerTlv == nullptr ||
|
||||
(serverTlv->GetServer16() == Mle::Mle::Rloc16FromRouterId(Get<Mle::MleRouter>().GetLeaderId())) ||
|
||||
|
||||
Reference in New Issue
Block a user