mirror of
https://github.com/NLnetLabs/unbound.git
synced 2025-12-20 23:00:56 -05:00
Fixup strict aliasing warning on Fedora 11.
git-svn-id: file:///svn/unbound/trunk@1674 be551aaa-1e26-0410-a405-d3ace91eadb9
This commit is contained in:
parent
c1b2364d1d
commit
ef564b5a29
2 changed files with 19 additions and 16 deletions
|
|
@ -1,3 +1,6 @@
|
||||||
|
19 June 2009: Wouter
|
||||||
|
- Fixup strict aliasing warning in iter priv code.
|
||||||
|
|
||||||
18 June 2009: Wouter
|
18 June 2009: Wouter
|
||||||
- Fix of message parse bug where (specifically) an NSEC and RRSIG
|
- Fix of message parse bug where (specifically) an NSEC and RRSIG
|
||||||
in the wrong order would be parsed, but put wrongly into internal
|
in the wrong order would be parsed, but put wrongly into internal
|
||||||
|
|
|
||||||
|
|
@ -219,35 +219,35 @@ int priv_rrset_bad(struct iter_priv* priv, ldns_buffer* pkt,
|
||||||
socklen_t len;
|
socklen_t len;
|
||||||
struct rr_parse* rr;
|
struct rr_parse* rr;
|
||||||
if(rrset->type == LDNS_RR_TYPE_A) {
|
if(rrset->type == LDNS_RR_TYPE_A) {
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_in sa;
|
||||||
struct sockaddr_in* sa = (struct sockaddr_in*)&addr;
|
len = (socklen_t)sizeof(sa);
|
||||||
len = (socklen_t)sizeof(*sa);
|
memset(&sa, 0, len);
|
||||||
memset(sa, 0, len);
|
sa.sin_family = AF_INET;
|
||||||
sa->sin_family = AF_INET;
|
sa.sin_port = (in_port_t)htons(UNBOUND_DNS_PORT);
|
||||||
sa->sin_port = (in_port_t)htons(UNBOUND_DNS_PORT);
|
|
||||||
for(rr = rrset->rr_first; rr; rr = rr->next) {
|
for(rr = rrset->rr_first; rr; rr = rr->next) {
|
||||||
if(ldns_read_uint16(rr->ttl_data+4)
|
if(ldns_read_uint16(rr->ttl_data+4)
|
||||||
!= INET_SIZE)
|
!= INET_SIZE)
|
||||||
continue;
|
continue;
|
||||||
memmove(&sa->sin_addr, rr->ttl_data+4+2,
|
memmove(&sa.sin_addr, rr->ttl_data+4+2,
|
||||||
INET_SIZE);
|
INET_SIZE);
|
||||||
if(priv_lookup_addr(priv, &addr, len))
|
if(priv_lookup_addr(priv,
|
||||||
|
(struct sockaddr_storage*)&sa, len))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
} else if(rrset->type == LDNS_RR_TYPE_AAAA) {
|
} else if(rrset->type == LDNS_RR_TYPE_AAAA) {
|
||||||
struct sockaddr_storage addr;
|
struct sockaddr_in6 sa;
|
||||||
struct sockaddr_in6* sa = (struct sockaddr_in6*)&addr;
|
len = (socklen_t)sizeof(sa);
|
||||||
len = (socklen_t)sizeof(*sa);
|
memset(&sa, 0, len);
|
||||||
memset(sa, 0, len);
|
sa.sin6_family = AF_INET6;
|
||||||
sa->sin6_family = AF_INET6;
|
sa.sin6_port = (in_port_t)htons(UNBOUND_DNS_PORT);
|
||||||
sa->sin6_port = (in_port_t)htons(UNBOUND_DNS_PORT);
|
|
||||||
for(rr = rrset->rr_first; rr; rr = rr->next) {
|
for(rr = rrset->rr_first; rr; rr = rr->next) {
|
||||||
if(ldns_read_uint16(rr->ttl_data+4)
|
if(ldns_read_uint16(rr->ttl_data+4)
|
||||||
!= INET6_SIZE)
|
!= INET6_SIZE)
|
||||||
continue;
|
continue;
|
||||||
memmove(&sa->sin6_addr, rr->ttl_data+4+2,
|
memmove(&sa.sin6_addr, rr->ttl_data+4+2,
|
||||||
INET6_SIZE);
|
INET6_SIZE);
|
||||||
if(priv_lookup_addr(priv, &addr, len))
|
if(priv_lookup_addr(priv,
|
||||||
|
(struct sockaddr_storage*)&sa, len))
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue