From 4f734fa24f4f159c8fd33b8a02799dd99ee94929 Mon Sep 17 00:00:00 2001 From: Jonathan Hui Date: Wed, 20 Mar 2019 03:18:51 -0700 Subject: [PATCH] [udp] return error on source port mismatch in Udp::SendTo() (#3698) --- src/core/net/udp6.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/core/net/udp6.cpp b/src/core/net/udp6.cpp index 2298f5ae2..fab8eb955 100644 --- a/src/core/net/udp6.cpp +++ b/src/core/net/udp6.cpp @@ -159,6 +159,9 @@ otError UdpSocket::SendTo(Message &aMessage, const MessageInfo &aMessageInfo) otError error = OT_ERROR_NONE; MessageInfo messageInfoLocal; + VerifyOrExit((aMessageInfo.GetSockPort() == 0) || (GetSockName().mPort == aMessageInfo.GetSockPort()), + error = OT_ERROR_INVALID_ARGS); + messageInfoLocal = aMessageInfo; if (messageInfoLocal.GetPeerAddr().IsUnspecified()) @@ -183,6 +186,7 @@ otError UdpSocket::SendTo(Message &aMessage, const MessageInfo &aMessageInfo) { SuccessOrExit(error = Bind(GetSockName())); } + messageInfoLocal.SetSockPort(GetSockName().mPort); #if OPENTHREAD_ENABLE_PLATFORM_UDP