mirror of
https://github.com/espressif/openthread.git
synced 2026-07-31 16:17:47 +00:00
[ip6] simplify applying of TMF UDP filter in Ip6::HandleDatagram() (#10822)
This commit simplifies the filter checks that drop TMF UDP messages from untrusted origins. The `mTmfOriginFilterEnabled` flag is checked first, and then the full UDP header is read from the message.
This commit is contained in:
+12
-13
@@ -1219,22 +1219,21 @@ Error Ip6::HandleDatagram(OwnedPtr<Message> aMessagePtr, bool aIsReassembled)
|
||||
SuccessOrExit(error);
|
||||
}
|
||||
|
||||
if (aMessagePtr->IsOriginHostUntrusted() && (nextHeader == kProtoUdp))
|
||||
{
|
||||
uint16_t destPort;
|
||||
|
||||
SuccessOrExit(
|
||||
error = aMessagePtr->Read(aMessagePtr->GetOffset() + Udp::Header::kDestPortFieldOffset, destPort));
|
||||
destPort = BigEndian::HostSwap16(destPort);
|
||||
|
||||
if (destPort == Tmf::kUdpPort
|
||||
#if OPENTHREAD_CONFIG_REFERENCE_DEVICE_ENABLE
|
||||
&& mTmfOriginFilterEnabled
|
||||
if (mTmfOriginFilterEnabled)
|
||||
#endif
|
||||
)
|
||||
{
|
||||
if (aMessagePtr->IsOriginHostUntrusted() && (nextHeader == kProtoUdp))
|
||||
{
|
||||
LogNote("Dropping TMF message from untrusted origin");
|
||||
ExitNow(error = kErrorDrop);
|
||||
Udp::Header udpHeader;
|
||||
|
||||
SuccessOrExit(error = aMessagePtr->Read(aMessagePtr->GetOffset(), udpHeader));
|
||||
|
||||
if (udpHeader.GetDestinationPort() == Tmf::kUdpPort)
|
||||
{
|
||||
LogNote("Dropping TMF message from untrusted origin");
|
||||
ExitNow(error = kErrorDrop);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user