[mpl] fix bug in comparing sequence numbers (#3588)

Fix serial number arithmetic due to value wrap.
This commit is contained in:
Jonathan Hui
2019-02-14 11:33:39 -08:00
committed by GitHub
parent 6170948e27
commit 1627a42864
+4 -2
View File
@@ -158,12 +158,14 @@ otError Mpl::UpdateSeedSet(uint16_t aSeedId, uint8_t aSequence)
{
// have existing entries for aSeedId
if (aSequence == mSeedSet[i].GetSequence())
int8_t diff = static_cast<int8_t>(aSequence - mSeedSet[i].GetSequence());
if (diff == 0)
{
// already received, drop message
ExitNow(error = OT_ERROR_DROP);
}
else if (insert == NULL && aSequence < mSeedSet[i].GetSequence())
else if (insert == NULL && diff < 0)
{
// insert in order of sequence
insert = &mSeedSet[i];