Author: tjansen Date: Thu Oct 15 20:03:36 2009 New Revision: 1202 Log: Fixed strict-aliasing warning in pisand. ndmain.c: In function ‘nd_read_inbound_msgs’: ndmain.c:366: warning: dereferencing pointer ‘ppeeraddr_ipv4’ does break strict-aliasing rules ndmain.c:364: note: initialized from here Modified: trunk/pisand/ndmain.c Modified: trunk/pisand/ndmain.c ============================================================================== --- trunk/pisand/ndmain.c Thu Oct 15 19:59:41 2009 (r1201) +++ trunk/pisand/ndmain.c Thu Oct 15 20:03:36 2009 (r1202) @@ -334,9 +334,10 @@ ssize_t len = 0; socklen_t addrlen = 0; ndConMgrEntry *entry; - struct sockaddr_in6 peeraddr = { 0 }; - struct sockaddr_in6 *ppeeraddr_ipv6; - struct sockaddr_in *ppeeraddr_ipv4; + union { + struct sockaddr_in6 ipv6; + struct sockaddr_in ipv4; + } peeraddr; addrlen = sizeof(peeraddr); @@ -355,16 +356,13 @@ if (nd_ctx.praddr.saf == AF_INET6) { char pbuffer[INET6_ADDRSTRLEN]; - ppeeraddr_ipv6 = (struct sockaddr_in6 *)&peeraddr; - pisa_ipv6_copy(&nd_ctx.praddr.sa.sa6, &ppeeraddr_ipv6->sin6_addr); + pisa_ipv6_copy(&nd_ctx.praddr.sa.sa6, &peeraddr.ipv6.sin6_addr); - inet_ntop(AF_INET6, &ppeeraddr_ipv6->sin6_addr, pbuffer, INET6_ADDRSTRLEN); - nd_ctx.praddr.port = ntohs(ppeeraddr_ipv6->sin6_port); + inet_ntop(AF_INET6, &peeraddr.ipv6.sin6_addr, pbuffer, INET6_ADDRSTRLEN); + nd_ctx.praddr.port = ntohs(peeraddr.ipv6.sin6_port); } else { - ppeeraddr_ipv4 = (struct sockaddr_in *)&peeraddr; - pisa_ipv4_copy(&nd_ctx.praddr.sa.sa4, &ppeeraddr_ipv4->sin_addr); - nd_ctx.praddr.port = ntohs(ppeeraddr_ipv4->sin_port); - + pisa_ipv4_copy(&nd_ctx.praddr.sa.sa4, &peeraddr.ipv4.sin_addr); + nd_ctx.praddr.port = ntohs(peeraddr.ipv4.sin_port); } convert_common_ipaddr_to_string(ipaddrstr, &nd_ctx.praddr);