From d9062e72d079b72e4c109c7cd2985c47a6936be7 Mon Sep 17 00:00:00 2001 From: Anderson Lizardo Date: Thu, 29 Dec 2011 14:41:08 -0400 Subject: [PATCH] hciemu: Fix strict-aliasing rules handling MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit gcc 4.4.3 (from Ubuntu 10.04) started complaining about this code: test/hciemu.c: In function ‘hci_host_control’: test/hciemu.c:431: error: dereferencing pointer ‘({anonymous})’ does break strict-aliasing rules test/hciemu.c:431: note: initialized from here The fix is based on commit 97046eaf3fc44b4451157b1a1bbc166ab0f4dda8. --- test/hciemu.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/hciemu.c b/test/hciemu.c index ccd6cc374..7eb881458 100644 --- a/test/hciemu.c +++ b/test/hciemu.c @@ -428,7 +428,7 @@ static int scan_enable(uint8_t *data) baswap(&ba, &vdev.bdaddr); sa.sin_family = AF_INET; memcpy(&sa.sin_addr.s_addr, &ba, sizeof(sa.sin_addr.s_addr)); - sa.sin_port = *(uint16_t *) &ba.b[4]; + memcpy(&sa.sin_port, &ba.b[4], sizeof(sa.sin_port)); if (bind(sk, (struct sockaddr *) &sa, sizeof(sa))) { syslog(LOG_ERR, "Can't bind socket: %s (%d)", strerror(errno), errno); @@ -541,7 +541,7 @@ do_connect: baswap(&ba, &cp->bdaddr); sa.sin_family = AF_INET; memcpy(&sa.sin_addr.s_addr, &ba, sizeof(sa.sin_addr.s_addr)); - sa.sin_port = *(uint16_t *) &ba.b[4]; + memcpy(&sa.sin_port, &ba.b[4], sizeof(sa.sin_port)); if (connect(sk, (struct sockaddr *) &sa, sizeof(sa)) < 0) { syslog(LOG_ERR, "Can't connect: %s (%d)", strerror(errno), errno); -- 2.47.3