Hi,

I maintain a Debian package for the IPv6 CVS branch of squid 2.5.x. On
the debian-ipv6 list Kalle Olavi Niemitalo mentioned some bugs in 
lib/rfc1035.c. If you are interested, the patch for the file is attached.

Regards,
Oliver
diff -urNad /home/racon/squid/squid_2.5.3ipv6-20030616/lib/rfc1035.c 
squid_2.5.3ipv6-20030616/lib/rfc1035.c
--- /home/racon/squid/squid_2.5.3ipv6-20030616/lib/rfc1035.c    2003-06-16 
21:28:24.000000000 -0300
+++ squid_2.5.3ipv6-20030616/lib/rfc1035.c      2003-06-16 22:43:43.000000000 -0300
@@ -545,7 +545,7 @@
 
 #if INET6
     if (IN6_IS_ADDR_V4MAPPED(&addr)) {
-      i = (unsigned int) ntohl(addr.s6_addr[3]);
+      i = (unsigned int) ntohl(addr.s6_addr32[3]);
 #else
       i = (unsigned int) ntohl(addr.s_addr);
 #endif
@@ -557,28 +557,27 @@
 #if INET6
     } else {
        /* a real IPv6 address */
-       unsigned char * a = (unsigned char *)rev;
        snprintf(rev, 72,
            "%x.%x.%x.%x.%x.%x.%x.%x."
            "%x.%x.%x.%x.%x.%x.%x.%x."
            "%x.%x.%x.%x.%x.%x.%x.%x."
            "%x.%x.%x.%x.%x.%x.%x.%x.ip6.int",
-           a[0] & 0x0f, a[0] & 0xf0,
-           a[1] & 0x0f, a[1] & 0xf0,
-           a[2] & 0x0f, a[2] & 0xf0,
-           a[3] & 0x0f, a[3] & 0xf0,
-           a[4] & 0x0f, a[4] & 0xf0,
-           a[5] & 0x0f, a[5] & 0xf0,
-           a[6] & 0x0f, a[6] & 0xf0,
-           a[7] & 0x0f, a[7] & 0xf0,
-           a[8] & 0x0f, a[8] & 0xf0,
-           a[9] & 0x0f, a[9] & 0xf0,
-           a[10] & 0x0f, a[10] & 0xf0,
-           a[11] & 0x0f, a[11] & 0xf0,
-           a[12] & 0x0f, a[12] & 0xf0,
-           a[13] & 0x0f, a[13] & 0xf0,
-           a[14] & 0x0f, a[14] & 0xf0,
-           a[15] & 0x0f, a[15] & 0xf0);
+           addr.s6_addr[15] & 0x0f, addr.s6_addr[15] >> 4,
+           addr.s6_addr[14] & 0x0f, addr.s6_addr[14] >> 4,
+           addr.s6_addr[13] & 0x0f, addr.s6_addr[13] >> 4,
+           addr.s6_addr[12] & 0x0f, addr.s6_addr[12] >> 4,
+           addr.s6_addr[11] & 0x0f, addr.s6_addr[11] >> 4,
+           addr.s6_addr[10] & 0x0f, addr.s6_addr[10] >> 4,
+           addr.s6_addr[9] & 0x0f, addr.s6_addr[9] >> 4,
+           addr.s6_addr[8] & 0x0f, addr.s6_addr[8] >> 4,
+           addr.s6_addr[7] & 0x0f, addr.s6_addr[7] >> 4,
+           addr.s6_addr[6] & 0x0f, addr.s6_addr[6] >> 4,
+           addr.s6_addr[5] & 0x0f, addr.s6_addr[5] >> 4,
+           addr.s6_addr[4] & 0x0f, addr.s6_addr[4] >> 4,
+           addr.s6_addr[3] & 0x0f, addr.s6_addr[3] >> 4,
+           addr.s6_addr[2] & 0x0f, addr.s6_addr[2] >> 4,
+           addr.s6_addr[1] & 0x0f, addr.s6_addr[1] >> 4,
+           addr.s6_addr[0] & 0x0f, addr.s6_addr[0] >> 4);
     }
 #endif
     h.id = rfc1035Qid();

Reply via email to