From d9da4c26528c3134e10ea9fc1caeb7ba31f306df Mon Sep 17 00:00:00 2001 From: Yakun Xu Date: Tue, 11 Sep 2018 12:11:06 +0800 Subject: [PATCH] [udp] verify destination before binding (#3055) --- src/core/net/udp6.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/core/net/udp6.cpp b/src/core/net/udp6.cpp index 9bebf8eb4..e9443e8f9 100644 --- a/src/core/net/udp6.cpp +++ b/src/core/net/udp6.cpp @@ -102,17 +102,6 @@ otError UdpSocket::SendTo(Message &aMessage, const MessageInfo &aMessageInfo) messageInfoLocal = aMessageInfo; - if (messageInfoLocal.GetSockAddr().IsUnspecified()) - { - messageInfoLocal.SetSockAddr(GetSockName().GetAddress()); - } - - if (GetSockName().mPort == 0) - { - GetSockName().mPort = static_cast(mTransport)->GetEphemeralPort(); - } - messageInfoLocal.SetSockPort(GetSockName().mPort); - if (messageInfoLocal.GetPeerAddr().IsUnspecified()) { VerifyOrExit(!GetPeerName().GetAddress().IsUnspecified(), error = OT_ERROR_INVALID_ARGS); @@ -126,6 +115,17 @@ otError UdpSocket::SendTo(Message &aMessage, const MessageInfo &aMessageInfo) messageInfoLocal.mPeerPort = GetPeerName().mPort; } + if (messageInfoLocal.GetSockAddr().IsUnspecified()) + { + messageInfoLocal.SetSockAddr(GetSockName().GetAddress()); + } + + if (GetSockName().mPort == 0) + { + GetSockName().mPort = static_cast(mTransport)->GetEphemeralPort(); + } + messageInfoLocal.SetSockPort(GetSockName().mPort); + SuccessOrExit(error = static_cast(mTransport)->SendDatagram(aMessage, messageInfoLocal, kProtoUdp)); exit: