From 35b9b20a7398e4a5ea919cd0a2d4a2664039cbd2 Mon Sep 17 00:00:00 2001 From: Jozsef Kadlecsik Date: Sun, 19 Dec 2010 00:42:03 +0100 Subject: Put back the Sparc specific workaround at getaddrinfo. --- lib/parse.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'lib/parse.c') diff --git a/lib/parse.c b/lib/parse.c index fa8a4f7..01b0ccf 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -634,11 +634,15 @@ get_addrinfo(struct ipset_session *session, continue; if (found == 0) { if (family == AF_INET) { - err = ipset_session_data_set(session, opt, - &((const struct sockaddr_in *)i->ai_addr)->sin_addr); + /* Workaround: cast increases required alignment on Sparc */ + struct sockaddr_in saddr; + memcpy(&saddr, i->ai_addr, sizeof(saddr)); + err = ipset_session_data_set(session, opt, &saddr.sin_addr); } else { - err = ipset_session_data_set(session, opt, - &((const struct sockaddr_in6 *)i->ai_addr)->sin6_addr); + /* Workaround: cast increases required alignment on Sparc */ + struct sockaddr_in6 saddr; + memcpy(&saddr, i->ai_addr, sizeof(saddr)); + err = ipset_session_data_set(session, opt, &saddr.sin6_addr); } } else if (found == 1) { ipset_warn(session, -- cgit v1.2.3