diff options
author | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2010-12-19 00:42:03 +0100 |
---|---|---|
committer | Jozsef Kadlecsik <kadlec@blackhole.kfki.hu> | 2010-12-19 00:42:03 +0100 |
commit | 35b9b20a7398e4a5ea919cd0a2d4a2664039cbd2 (patch) | |
tree | 9910f462b3a2f78add7d2adcb6de88327addb858 | |
parent | 3ded98f40b3fbd08657571f2646397a5f71e10d5 (diff) |
Put back the Sparc specific workaround at getaddrinfo.
-rw-r--r-- | lib/parse.c | 12 |
1 files changed, 8 insertions, 4 deletions
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, |