diff options
author | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2011-12-07 16:45:22 +0059 |
---|---|---|
committer | Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org> | 2011-12-07 16:45:22 +0059 |
commit | 747002d7fcd154af2cec58d66442f257dc8b0174 (patch) | |
tree | 54666c8d79dc0a22976be83b8806dc1931d40b20 | |
parent | a01d37870bbf9892d43e792e5de0683ca41c5497 (diff) | |
download | wpa_supplicant-linaro_android_4.0.1.tar.gz |
wpa_supplicant: Fix aliasing violationslinaro_android_4.0.1
This allows the code to build without
-fno-strict-aliasing, enabling more compiler
optimizations
Signed-off-by: Bernhard Rosenkraenzer <Bernhard.Rosenkranzer@linaro.org>
-rw-r--r-- | wpa_ctrl.c | 24 |
1 files changed, 18 insertions, 6 deletions
@@ -51,14 +51,26 @@ static const char *local_socket_prefix = "wpa_ctrl_"; struct wpa_ctrl { #ifdef CONFIG_CTRL_IFACE_UDP int s; - struct sockaddr_in local; - struct sockaddr_in dest; + union { + struct sockaddr_in local; + struct sockaddr local_generic; + }; + union { + struct sockaddr_in dest; + struct sockaddr dest_generic; + }; char *cookie; #endif /* CONFIG_CTRL_IFACE_UDP */ #ifdef CONFIG_CTRL_IFACE_UNIX int s; - struct sockaddr_un local; - struct sockaddr_un dest; + union { + struct sockaddr_un local; + struct sockaddr local_generic; + }; + union { + struct sockaddr_un dest; + struct sockaddr dest_generic; + }; #endif /* CONFIG_CTRL_IFACE_UNIX */ #ifdef CONFIG_CTRL_IFACE_NAMED_PIPE HANDLE pipe; @@ -92,7 +104,7 @@ struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path) #else /* ANDROID */ "/tmp/wpa_ctrl_%d-%d", getpid(), counter++); #endif - if (bind(ctrl->s, (struct sockaddr *) &ctrl->local, + if (bind(ctrl->s, &ctrl->local_generic, sizeof(ctrl->local)) < 0) { close(ctrl->s); os_free(ctrl); @@ -126,7 +138,7 @@ struct wpa_ctrl * wpa_ctrl_open(const char *ctrl_path) ctrl->dest.sun_family = AF_UNIX; os_snprintf(ctrl->dest.sun_path, sizeof(ctrl->dest.sun_path), "%s", ctrl_path); - if (connect(ctrl->s, (struct sockaddr *) &ctrl->dest, + if (connect(ctrl->s, &ctrl->dest_generic, sizeof(ctrl->dest)) < 0) { close(ctrl->s); unlink(ctrl->local.sun_path); |