From: Alexis Robert Date: Sat, 29 Jun 2013 08:23:49 +0000 (-0600) Subject: Fix Ip::Address::operator =(sockaddr_storage) X-Git-Tag: SQUID_3_3_6~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=a01fe97eee577a1df88766af6e624dfd88756c24;p=thirdparty%2Fsquid.git Fix Ip::Address::operator =(sockaddr_storage) The memcpy() for AF_INET6 is using a length of sizeof(sockaddr_in) instead of sizeof(sockaddr_in6), so squid was trying to connect to truncatured IPv6 addresses with strange ports. --- diff --git a/src/ip/Address.cc b/src/ip/Address.cc index dda6fa12c7..cda6a6e1f3 100644 --- a/src/ip/Address.cc +++ b/src/ip/Address.cc @@ -451,7 +451,7 @@ Ip::Address::operator =(const struct sockaddr_storage &s) { /* some AF_* magic to tell socket types apart and what we need to do */ if (s.ss_family == AF_INET6) { - memcpy(&m_SocketAddr, &s, sizeof(struct sockaddr_in)); + memcpy(&m_SocketAddr, &s, sizeof(struct sockaddr_in6)); } else { // convert it to our storage mapping. struct sockaddr_in *sin = (struct sockaddr_in*)&s; m_SocketAddr.sin6_port = sin->sin_port;