From a211901f62b96fb6fb0ee792dab4007c64b44e18 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Mon, 22 Jul 2019 09:38:30 -0700 Subject: [PATCH] [network-data] compare TLV length in Leader::IsStableUpdated() (#4011) --- src/core/thread/network_data_leader_ftd.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/core/thread/network_data_leader_ftd.cpp b/src/core/thread/network_data_leader_ftd.cpp index 8dcba4366..e4685bbac 100644 --- a/src/core/thread/network_data_leader_ftd.cpp +++ b/src/core/thread/network_data_leader_ftd.cpp @@ -631,7 +631,8 @@ bool Leader::IsStableUpdated(uint8_t *aTlvs, uint8_t aTlvsLength, uint8_t *aTlvs { BorderRouterTlv *borderRouterBase = FindBorderRouter(*prefixBase, true); - if (!borderRouterBase || memcmp(borderRouter, borderRouterBase, borderRouter->GetLength()) != 0) + if (!borderRouterBase || (borderRouter->GetLength() != borderRouterBase->GetLength()) || + (memcmp(borderRouter, borderRouterBase, borderRouter->GetLength()) != 0)) { ExitNow(rval = true); } @@ -641,7 +642,8 @@ bool Leader::IsStableUpdated(uint8_t *aTlvs, uint8_t aTlvsLength, uint8_t *aTlvs { HasRouteTlv *hasRouteBase = FindHasRoute(*prefixBase, true); - if (!hasRouteBase || (memcmp(hasRoute, hasRouteBase, hasRoute->GetLength()) != 0)) + if (!hasRouteBase || (hasRoute->GetLength() != hasRouteBase->GetLength()) || + (memcmp(hasRoute, hasRouteBase, hasRoute->GetLength()) != 0)) { ExitNow(rval = true); }