From e6be58c2322fab098466d66816d99f67ae5a210f Mon Sep 17 00:00:00 2001 From: Marcel Holtmann Date: Thu, 16 Jul 2009 02:43:47 +0200 Subject: Fix handling of strict-aliasing rules --- plugins/loopback.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) (limited to 'plugins/loopback.c') diff --git a/plugins/loopback.c b/plugins/loopback.c index 782853ef..59716c24 100644 --- a/plugins/loopback.c +++ b/plugins/loopback.c @@ -176,7 +176,7 @@ static int setup_hostname(void) static int setup_loopback(void) { struct ifreq ifr; - struct sockaddr_in *addr; + struct sockaddr_in addr; int sk, err; sk = socket(PF_INET, SOCK_DGRAM, 0); @@ -197,9 +197,10 @@ static int setup_loopback(void) goto done; } - addr = (struct sockaddr_in *) &ifr.ifr_addr; - addr->sin_family = AF_INET; - addr->sin_addr.s_addr = inet_addr("127.0.0.1"); + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = inet_addr("127.0.0.1"); + memcpy(&ifr.ifr_addr, &addr, sizeof(ifr.ifr_addr)); err = ioctl(sk, SIOCSIFADDR, &ifr); if (err < 0) { @@ -208,9 +209,10 @@ static int setup_loopback(void) goto done; } - addr = (struct sockaddr_in *) &ifr.ifr_netmask; - addr->sin_family = AF_INET; - addr->sin_addr.s_addr = inet_addr("255.0.0.0"); + memset(&addr, 0, sizeof(addr)); + addr.sin_family = AF_INET; + addr.sin_addr.s_addr = inet_addr("255.0.0.0"); + memcpy(&ifr.ifr_netmask, &addr, sizeof(ifr.ifr_netmask)); err = ioctl(sk, SIOCSIFNETMASK, &ifr); if (err < 0) { -- cgit v1.2.3