From df6a435d4215a2e63b8cfda23fb79648f3f373c8 Mon Sep 17 00:00:00 2001 From: Simon Duquennoy Date: Mon, 10 Nov 2014 14:23:42 +0100 Subject: [PATCH] struct frame802154_t: make sure dest_addr and src_addr are aligned --- core/net/mac/frame802154.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/core/net/mac/frame802154.h b/core/net/mac/frame802154.h index 1e97a41df..fcd0ae54a 100644 --- a/core/net/mac/frame802154.h +++ b/core/net/mac/frame802154.h @@ -169,12 +169,15 @@ typedef struct { * specification for details. */ typedef struct { + /* The fields dest_addr and src_addr must come first to ensure they are aligned to the + * CPU word size. Needed as they are accessed directly as linkaddr_t*. Note we cannot use + * the type linkaddr_t directly here, as we always need 8 bytes, not LINKADDR_SIZE bytes. */ + uint8_t dest_addr[8]; /**< Destination address */ + uint8_t src_addr[8]; /**< Source address */ frame802154_fcf_t fcf; /**< Frame control field */ uint8_t seq; /**< Sequence number */ uint16_t dest_pid; /**< Destination PAN ID */ - uint8_t dest_addr[8]; /**< Destination address */ uint16_t src_pid; /**< Source PAN ID */ - uint8_t src_addr[8]; /**< Source address */ frame802154_aux_hdr_t aux_hdr; /**< Aux security header */ uint8_t *payload; /**< Pointer to 802.15.4 payload */ int payload_len; /**< Length of payload field */