diff options
-rw-r--r-- | lib/parse.c | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/lib/parse.c b/lib/parse.c index 169d2e0..c4d9c75 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, |