1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-12-24 14:03:55 +01:00

Merge pull request #914 from authmillenon/fix-dereferencing

net: sixlowpan: Fix dereferencing of type-punned pointer
This commit is contained in:
Oleg Hahm 2014-04-09 00:03:25 +02:00
commit bcd09457c2

View File

@ -54,12 +54,13 @@ msg_t msg_q[RADIO_RCV_BUF_SIZE];
uint8_t lowpan_mac_buf[PAYLOAD_SIZE];
static uint8_t macdsn;
static inline void mac_short_to_eui64(net_if_eui64_t *eui64,
uint16_t short_addr)
static inline void mac_frame_short_to_eui64(net_if_eui64_t *eui64,
uint8_t *frame_short)
{
eui64->uint32[0] = HTONL(0x000000ff);
eui64->uint16[2] = HTONS(0xfe00);
eui64->uint16[3] = LETONS(short_addr);
eui64->uint8[6] = frame_short[1];
eui64->uint8[7] = frame_short[0];
}
void recv_ieee802154_frame(void)
@ -129,7 +130,7 @@ void recv_ieee802154_frame(void)
#endif
if (frame.fcf.src_addr_m == IEEE_802154_SHORT_ADDR_M) {
mac_short_to_eui64(&src, *((uint16_t *)frame.src_addr));
mac_frame_short_to_eui64(&src, frame.src_addr);
}
else if (frame.fcf.src_addr_m == IEEE_802154_LONG_ADDR_M) {
memcpy(&src, frame.src_addr, 8);
@ -140,7 +141,7 @@ void recv_ieee802154_frame(void)
}
if (frame.fcf.dest_addr_m == IEEE_802154_SHORT_ADDR_M) {
mac_short_to_eui64(&dst, *((uint16_t *)frame.dest_addr));
mac_frame_short_to_eui64(&dst, frame.dest_addr);
}
else if (frame.fcf.dest_addr_m == IEEE_802154_LONG_ADDR_M) {
memcpy(&dst, frame.dest_addr, 8);