From: Wouter Wijngaards Date: Fri, 19 Jun 2009 07:09:12 +0000 (+0000) Subject: Fixup strict aliasing warning on Fedora 11. X-Git-Tag: release-1.3.1~33 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=ef564b5a294ff058e252a130b868db565fc75a6c;p=thirdparty%2Funbound.git Fixup strict aliasing warning on Fedora 11. git-svn-id: file:///svn/unbound/trunk@1674 be551aaa-1e26-0410-a405-d3ace91eadb9 --- diff --git a/doc/Changelog b/doc/Changelog index 7108b98c0..d3b64f59a 100644 --- a/doc/Changelog +++ b/doc/Changelog @@ -1,3 +1,6 @@ +19 June 2009: Wouter + - Fixup strict aliasing warning in iter priv code. + 18 June 2009: Wouter - Fix of message parse bug where (specifically) an NSEC and RRSIG in the wrong order would be parsed, but put wrongly into internal diff --git a/iterator/iter_priv.c b/iterator/iter_priv.c index f6296560a..66394ad53 100644 --- a/iterator/iter_priv.c +++ b/iterator/iter_priv.c @@ -219,35 +219,35 @@ int priv_rrset_bad(struct iter_priv* priv, ldns_buffer* pkt, socklen_t len; struct rr_parse* rr; if(rrset->type == LDNS_RR_TYPE_A) { - struct sockaddr_storage addr; - struct sockaddr_in* sa = (struct sockaddr_in*)&addr; - len = (socklen_t)sizeof(*sa); - memset(sa, 0, len); - sa->sin_family = AF_INET; - sa->sin_port = (in_port_t)htons(UNBOUND_DNS_PORT); + struct sockaddr_in sa; + len = (socklen_t)sizeof(sa); + memset(&sa, 0, len); + sa.sin_family = AF_INET; + sa.sin_port = (in_port_t)htons(UNBOUND_DNS_PORT); for(rr = rrset->rr_first; rr; rr = rr->next) { if(ldns_read_uint16(rr->ttl_data+4) != INET_SIZE) continue; - memmove(&sa->sin_addr, rr->ttl_data+4+2, + memmove(&sa.sin_addr, rr->ttl_data+4+2, INET_SIZE); - if(priv_lookup_addr(priv, &addr, len)) + if(priv_lookup_addr(priv, + (struct sockaddr_storage*)&sa, len)) return 1; } } else if(rrset->type == LDNS_RR_TYPE_AAAA) { - struct sockaddr_storage addr; - struct sockaddr_in6* sa = (struct sockaddr_in6*)&addr; - len = (socklen_t)sizeof(*sa); - memset(sa, 0, len); - sa->sin6_family = AF_INET6; - sa->sin6_port = (in_port_t)htons(UNBOUND_DNS_PORT); + struct sockaddr_in6 sa; + len = (socklen_t)sizeof(sa); + memset(&sa, 0, len); + sa.sin6_family = AF_INET6; + sa.sin6_port = (in_port_t)htons(UNBOUND_DNS_PORT); for(rr = rrset->rr_first; rr; rr = rr->next) { if(ldns_read_uint16(rr->ttl_data+4) != INET6_SIZE) continue; - memmove(&sa->sin6_addr, rr->ttl_data+4+2, + memmove(&sa.sin6_addr, rr->ttl_data+4+2, INET6_SIZE); - if(priv_lookup_addr(priv, &addr, len)) + if(priv_lookup_addr(priv, + (struct sockaddr_storage*)&sa, len)) return 1; } }