From: Jozsef Kadlecsik Date: Thu, 23 Dec 2010 13:44:44 +0000 (+0100) Subject: Use cast to void * instead of memcpy as Sparc workaround at sockaddr_XXX. X-Git-Tag: v5.2~2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7c80f67c0c16620e8b0425a129b3dfe72a72aaed;p=thirdparty%2Fipset.git Use cast to void * instead of memcpy as Sparc workaround at sockaddr_XXX. Direct cast results "cast increases required alignment of target type" on Sparc: use indirect cast to void * instead of memcpy, as Jan Engelhardt suggested. --- diff --git a/lib/parse.c b/lib/parse.c index 169d2e01..c4d9c751 100644 --- a/lib/parse.c +++ b/lib/parse.c @@ -634,15 +634,13 @@ get_addrinfo(struct ipset_session *session, continue; if (found == 0) { if (family == AF_INET) { - /* 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); + /* Workaround: direct cast increases required alignment on Sparc */ + const struct sockaddr_in *saddr = (void *)i->ai_addr; + err = ipset_session_data_set(session, opt, &saddr->sin_addr); } else { - /* 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); + /* Workaround: direct cast increases required alignment on Sparc */ + const struct sockaddr_in6 *saddr = (void *)i->ai_addr; + err = ipset_session_data_set(session, opt, &saddr->sin6_addr); } } else if (found == 1) { ipset_warn(session,