mirror of
https://github.com/espressif/openthread.git
synced 2026-10-02 13:57:38 +00:00
[posix-app] fix aliasing issues in platform UDP (#3591)
This commit is contained in:
@@ -186,18 +186,20 @@ static otError receivePacket(int aFd, uint8_t *aPayload, uint16_t &aLength, otMe
|
|||||||
{
|
{
|
||||||
if (cmsg->cmsg_type == IPV6_HOPLIMIT)
|
if (cmsg->cmsg_type == IPV6_HOPLIMIT)
|
||||||
{
|
{
|
||||||
int hoplimit = *reinterpret_cast<int *>(CMSG_DATA(cmsg));
|
int hoplimit;
|
||||||
|
|
||||||
|
memcpy(&hoplimit, CMSG_DATA(cmsg), sizeof(hoplimit));
|
||||||
aMessageInfo.mHopLimit = static_cast<uint8_t>(hoplimit);
|
aMessageInfo.mHopLimit = static_cast<uint8_t>(hoplimit);
|
||||||
}
|
}
|
||||||
else if (cmsg->cmsg_type == IPV6_PKTINFO)
|
else if (cmsg->cmsg_type == IPV6_PKTINFO)
|
||||||
{
|
{
|
||||||
struct in6_pktinfo *pktinfo;
|
struct in6_pktinfo pktinfo;
|
||||||
|
|
||||||
pktinfo = reinterpret_cast<in6_pktinfo *>(CMSG_DATA(cmsg));
|
memcpy(&pktinfo, CMSG_DATA(cmsg), sizeof(pktinfo));
|
||||||
|
|
||||||
aMessageInfo.mInterfaceId =
|
aMessageInfo.mInterfaceId =
|
||||||
(pktinfo->ipi6_ifindex == sPlatNetifIndex ? static_cast<int8_t>(OT_NETIF_INTERFACE_ID_THREAD) : 0);
|
(pktinfo.ipi6_ifindex == sPlatNetifIndex ? static_cast<int8_t>(OT_NETIF_INTERFACE_ID_THREAD) : 0);
|
||||||
memcpy(&aMessageInfo.mSockAddr, &pktinfo->ipi6_addr, sizeof(aMessageInfo.mSockAddr));
|
memcpy(&aMessageInfo.mSockAddr, &pktinfo.ipi6_addr, sizeof(aMessageInfo.mSockAddr));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user