From 54df0a1095f13b97638d39c81b5e165c44f3d949 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Sat, 18 Nov 2017 21:00:41 +0100 Subject: ranap_msg_factory: sanitize: memcpy instead of unaligned int copy The sanitize build complains about writing to a uint32_t that is not 4-byte aligned. Instead, write the uint32_t by memcpy. For that, move the common ntohl() to the top and store in a local uint32_t, memcpy() from that in both code paths. Change-Id: Iacdd15421f824dd009448a96355b533dff28258b --- src/ranap_msg_factory.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/ranap_msg_factory.c b/src/ranap_msg_factory.c index ef3e9ef..fe7e325 100644 --- a/src/ranap_msg_factory.c +++ b/src/ranap_msg_factory.c @@ -638,6 +638,7 @@ static void new_transp_layer_addr(BIT_STRING_t *out, uint32_t ip, bool use_x213_ { uint8_t *buf; unsigned int len; + uint32_t ip_h = ntohl(ip); if (use_x213_nsap) { len = 160/8; @@ -645,11 +646,11 @@ static void new_transp_layer_addr(BIT_STRING_t *out, uint32_t ip, bool use_x213_ buf[0] = 0x35; /* AFI For IANA ICP */ buf[1] = 0x00; /* See A.5.2.1.2.7 of X.213 */ buf[2] = 0x01; - *(uint32_t *)&buf[3] = ntohl(ip); + memcpy(&buf[3], &ip_h, sizeof(ip_h)); } else { - len = 4; + len = sizeof(ip_h); buf = CALLOC(len, sizeof(uint8_t)); - *(uint32_t *)buf = ntohl(ip); + memcpy(buf, &ip_h, sizeof(ip_h)); } out->buf = buf; out->size = len; -- cgit v1.2.3