[pisa-src] r1202 - trunk/pisand/ndmain.c

  • From: Thomas Jansen <mithi@xxxxxxxxx>
  • To: pisa-src@xxxxxxxxxxxxx
  • Date: Thu, 15 Oct 2009 20:03:36 +0200

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);

Other related posts:

  • » [pisa-src] r1202 - trunk/pisand/ndmain.c - Thomas Jansen