Prevent 'dereferencing pointer X does break strict-aliasing rules'
authorSven-Ola Tuecke <sven-ola@gmx.de>
Wed, 17 Mar 2010 12:02:55 +0000 (13:02 +0100)
committerSven-Ola Tuecke <sven-ola@gmx.de>
Wed, 17 Mar 2010 12:02:55 +0000 (13:02 +0100)
when compiling with -Os under gcc-4.x.x

src/parser.c

index 4cd4dcb..620dd4e 100644 (file)
@@ -457,10 +457,10 @@ olsr_input(int fd, void *data __attribute__ ((unused)), unsigned int flags __att
     }
     if (olsr_cnf->ip_version == AF_INET) {
       /* IPv4 sender address */
-      from_addr.v4 = ((struct sockaddr_in *)&from)->sin_addr;
+      memcpy(&from_addr.v4, &((struct sockaddr_in *)&from)->sin_addr, sizeof(from_addr.v4));
     } else {
       /* IPv6 sender address */
-      from_addr.v6 = ((struct sockaddr_in6 *)&from)->sin6_addr;
+      memcpy(&from_addr.v6, &((struct sockaddr_in6 *)&from)->sin6_addr, sizeof(from_addr.v6));
     }
 
 #ifdef DEBUG