Mercurial > hg > nginx
diff src/http/ngx_http_core_module.c @ 4828:f57154322e0e
Fixed strict aliasing bugs when dealing with IPv4-mapped IPv6 addresses
(closes #201).
author | Ruslan Ermilov <ru@nginx.com> |
---|---|
date | Thu, 30 Aug 2012 14:58:11 +0000 |
parents | 6e46016ea276 |
children | 6f085bfcdb4d |
line wrap: on
line diff
--- a/src/http/ngx_http_core_module.c Tue Aug 28 13:31:01 2012 +0000 +++ b/src/http/ngx_http_core_module.c Thu Aug 30 14:58:11 2012 +0000 @@ -2776,7 +2776,15 @@ if (IN6_IS_ADDR_V4MAPPED(inaddr6)) { family = AF_INET; - inaddr = *(in_addr_t *) &inaddr6->s6_addr[12]; + + p = inaddr6->s6_addr; + + inaddr = p[12] << 24; + inaddr += p[13] << 16; + inaddr += p[14] << 8; + inaddr += p[15]; + + inaddr = htonl(inaddr); } } #endif