diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2009-08-30 11:49:40 -0700 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2009-08-30 11:49:40 -0700 |
commit | 013f769571e19d724c944fcb069d5767a29cfc04 (patch) | |
tree | 44b81de4531a2b3677c8200136afd2eccbf1f759 | |
parent | 7aa01c59f981771b36b50b9a079fe0053dad643d (diff) | |
download | bluez-hcidump-013f769571e19d724c944fcb069d5767a29cfc04.tar.gz |
Fix some issues with strict-aliasing
-rw-r--r-- | src/hcidump.c | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/src/hcidump.c b/src/hcidump.c index 4be914f..9dde2c3 100644 --- a/src/hcidump.c +++ b/src/hcidump.c @@ -305,10 +305,11 @@ static int process_frames(int dev, int sock, int fd, unsigned long flags) while (cmsg) { switch (cmsg->cmsg_type) { case HCI_CMSG_DIR: - frm.in = *((int *) CMSG_DATA(cmsg)); + memcpy(&frm.in, CMSG_DATA(cmsg), sizeof(int)); break; case HCI_CMSG_TSTAMP: - frm.ts = *((struct timeval *) CMSG_DATA(cmsg)); + memcpy(&frm.ts, CMSG_DATA(cmsg), + sizeof(struct timeval)); break; } cmsg = CMSG_NXTHDR(&msg, cmsg); @@ -626,6 +627,8 @@ static int open_socket(int dev, unsigned long flags) static int open_connection(char *addr, char *port) { struct sockaddr_storage ss; + struct sockaddr_in *in = (struct sockaddr_in *) &ss; + struct sockaddr_in6 *in6 = (struct sockaddr_in6 *) &ss; struct addrinfo hints, *res0, *res; int sk = -1, opt = 1; @@ -657,13 +660,13 @@ static int open_connection(char *addr, char *port) switch(ss.ss_family) { case AF_INET: - ((struct sockaddr_in *) &ss)->sin_addr.s_addr = htonl(INADDR_ANY); - ((struct sockaddr_in *) &ss)->sin_port = 0; + in->sin_addr.s_addr = htonl(INADDR_ANY); + in->sin_port = 0; break; case AF_INET6: - memcpy(&((struct sockaddr_in6 *) &ss)->sin6_addr, - &in6addr_any, sizeof(in6addr_any)); - ((struct sockaddr_in6 *) &ss)->sin6_port = 0; + memcpy(&in6->sin6_addr, &in6addr_any, + sizeof(in6addr_any)); + in6->sin6_port = 0; break; } |