mirror of
https://github.com/espressif/openthread.git
synced 2026-07-27 22:37:45 +00:00
[dns-types] verify pointer refers to prior occurrence (#8262)
This commit is contained in:
@@ -522,6 +522,7 @@ Error Name::LabelIterator::GetNextLabel(void)
|
||||
// specify an offset value from the start of the DNS header.
|
||||
|
||||
uint16_t pointerValue;
|
||||
uint16_t nextLabelOffset;
|
||||
|
||||
SuccessOrExit(error = mMessage.Read(mNextLabelOffset, pointerValue));
|
||||
|
||||
@@ -532,7 +533,9 @@ Error Name::LabelIterator::GetNextLabel(void)
|
||||
|
||||
// `mMessage.GetOffset()` must point to the start of the
|
||||
// DNS header.
|
||||
mNextLabelOffset = mMessage.GetOffset() + (HostSwap16(pointerValue) & kPointerLabelOffsetMask);
|
||||
nextLabelOffset = mMessage.GetOffset() + (HostSwap16(pointerValue) & kPointerLabelOffsetMask);
|
||||
VerifyOrExit(nextLabelOffset < mNextLabelOffset, error = kErrorParse);
|
||||
mNextLabelOffset = nextLabelOffset;
|
||||
|
||||
// Go back through the `while(true)` loop to get the next label.
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user