Fix strict aliasing problem in ipcalc
authorHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 17 Mar 2010 12:22:53 +0000 (13:22 +0100)
committerHenning Rogge <henning.rogge@fkie.fraunhofer.de>
Wed, 17 Mar 2010 12:22:53 +0000 (13:22 +0100)
src/ipcalc.h

index 01af282..2910623 100644 (file)
@@ -155,12 +155,8 @@ olsr_string_to_prefix(int ipversion, struct olsr_ip_prefix *dst, const char *buf
 static INLINE const char *
 sockaddr4_to_string(struct ipaddr_str *const buf, const struct sockaddr *const addr)
 {
-  union {
-    const struct sockaddr *a_sockaddr;
-    const struct sockaddr_in *a_sockaddr_in;
-  } nowarn;
-  nowarn.a_sockaddr = addr;
-  return ip4_to_string(buf, nowarn.a_sockaddr_in->sin_addr);
+  const struct sockaddr_in *addr4 = (const struct sockaddr_in *)addr;
+  return ip4_to_string(buf, addr4->sin_addr);
 }
 
 /* we need to handle one value specifically since shifting 32 bits of a 32 bit integer is the same as shifting 0 bits.