]> git.ipfire.org Git - thirdparty/ipset.git/commitdiff
Put back the Sparc specific workaround at getaddrinfo.
authorJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Sat, 18 Dec 2010 23:42:03 +0000 (00:42 +0100)
committerJozsef Kadlecsik <kadlec@blackhole.kfki.hu>
Sat, 18 Dec 2010 23:42:03 +0000 (00:42 +0100)
lib/parse.c

index fa8a4f7af76ebea8e1dc9977471ddc2890155d84..01b0ccf56afbd6df832e7e51fcb6b47bf9b42774 100644 (file)
@@ -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,