diff options
24 files changed, 210 insertions, 1002 deletions
diff --git a/www/squid/Makefile b/www/squid/Makefile index 07b7554..0019d32 100644 --- a/www/squid/Makefile +++ b/www/squid/Makefile @@ -23,7 +23,7 @@ PORTNAME= squid PORTVERSION= 2.5.4 -PORTREVISION= 9 +PORTREVISION= 10 CATEGORIES= www MASTER_SITES= \ ftp://ftp.squid-cache.org/pub/%SUBDIR%/ \ @@ -76,7 +76,18 @@ PATCHFILES= squid-2.5.STABLE4-reconfigure_message.patch \ squid-2.5.STABLE4-ntlm_auth_popups.patch \ squid-2.5.STABLE4-ldap_group-S.patch \ squid-2.5.STABLE4-ipcache_purge.patch \ - squid-2.5.STABLE4-cache_peer_access_ntlm.patch + squid-2.5.STABLE4-cache_peer_access_ntlm.patch \ + squid-2.5.STABLE4-wbinfo_group.patch \ + squid-2.5.STABLE4-SMB_ntlm_auth.patch \ + squid-2.5.STABLE4-miss_access_internal.patch \ + squid-2.5.STABLE4-squidclient_auth.patch \ + squid-2.5.STABLE4-authfixes.patch \ + squid-2.5.STABLE4-arp-FreeBSD.patch \ + squid-2.5.STABLE4-deny_info_reply.patch \ + squid-2.5.STABLE4-authfixes2.patch \ + squid-2.5.STABLE4-reply_body_max_size.patch \ + squid-2.5.STABLE4-digest-abort.patch \ + squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch PATCH_DIST_STRIP= -p1 MAINTAINER= tmseck@netcologne.de diff --git a/www/squid/distinfo b/www/squid/distinfo index 73777e6..bdb4bcc 100644 --- a/www/squid/distinfo +++ b/www/squid/distinfo @@ -82,3 +82,25 @@ MD5 (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = d76b6163f0806494defe9cba3 SIZE (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = 1022 MD5 (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 94841c505d86a1ab310b817119079e3b SIZE (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 3378 +MD5 (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 4fff0be253f87fa538691497600daf70 +SIZE (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 1105 +MD5 (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 6ee610502b49c00914e2fe986f21db78 +SIZE (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 1924 +MD5 (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 8f4259401052ecae31fa3de4535a624f +SIZE (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 837 +MD5 (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = eff31cbd54adad086d50e0ae7dbe2c6e +SIZE (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = 1107 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 139ab240c01acf6eeed7ead27f0ce387 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 9401 +MD5 (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = bad7a9a59071faf569734f022b35b28f +SIZE (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = 3999 +MD5 (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 97a9af2a33ded35bcef989181318ac71 +SIZE (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 1951 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = b1de702ac773133affa1393c48d04807 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = 2222 +MD5 (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 79beba0e5466279ffbdd4322a3579aeb +SIZE (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 524 +MD5 (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = a0cf9a5451b89bb6d8a8982a14791c15 +SIZE (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = 946 +MD5 (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 8422d34ab797ae07727a5f2fdfe1a832 +SIZE (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 3277 diff --git a/www/squid/files/patch-helpers_ntlm_auth_SMB_smbval b/www/squid/files/patch-helpers_ntlm_auth_SMB_smbval deleted file mode 100644 index 754b4aa..0000000 --- a/www/squid/files/patch-helpers_ntlm_auth_SMB_smbval +++ /dev/null @@ -1,48 +0,0 @@ ---- helpers/ntlm_auth/SMB/smbval/session.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/session.c Fri Jan 16 00:25:57 2004 -@@ -23,7 +23,9 @@ - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - #include <stdlib.h> - ---- helpers/ntlm_auth/SMB/smbval/rfcnb-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/rfcnb-util.c Fri Jan 16 00:26:17 2004 -@@ -24,7 +24,9 @@ - */ - - #include <string.h> -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - - #include "std-includes.h" - #include "rfcnb-priv.h" ---- helpers/ntlm_auth/SMB/smbval/smblib-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib-util.c Fri Jan 16 00:26:39 2004 -@@ -24,7 +24,9 @@ - */ - - #include "smblib-priv.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - - #include "rfcnb.h" ---- helpers/ntlm_auth/SMB/smbval/smblib.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib.c Fri Jan 16 00:26:57 2004 -@@ -25,7 +25,9 @@ - */ - - #include "config.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <ctype.h> - #include <string.h> - diff --git a/www/squid/files/patch-src_acl.c b/www/squid/files/patch-src_acl.c deleted file mode 100644 index 727b440..0000000 --- a/www/squid/files/patch-src_acl.c +++ /dev/null @@ -1,117 +0,0 @@ ---- src/acl.c 2004/02/04 05:45:07 1.1 -+++ src/acl.c 2004/02/04 05:45:16 -@@ -2626,6 +2626,9 @@ - #endif - #include <net/route.h> - #include <net/if.h> -+#ifdef _SQUID_FREEBSD__ -+#include <net/if_arp.h> -+#endif - #if HAVE_NETINET_IF_ETHER_H - #include <netinet/if_ether.h> - #endif -@@ -2846,6 +2849,82 @@ - inet_ntoa(c), splayLastResult ? "NOT found" : "found"); - return (0 == splayLastResult); - } -+#elif defined(_SQUID_FREEBSD_) -+ struct arpreq arpReq; -+ struct sockaddr_in ipAddr; -+ unsigned char ifbuffer[sizeof(struct ifreq) * 64]; -+ struct ifconf ifc; -+ struct ifreq *ifr; -+ int offset; -+ splayNode **Top = dataptr; -+ -+ int mib[6]; -+ size_t needed; -+ char *lim, *buf, *next; -+ struct rt_msghdr *rtm; -+ struct sockaddr_inarp *sin; -+ struct sockaddr_dl *sdl; -+ -+ /* -+ * Set up structures for ARP lookup with blank interface name -+ */ -+ ipAddr.sin_family = AF_INET; -+ ipAddr.sin_port = 0; -+ ipAddr.sin_addr = c; -+ memset(&arpReq, '\0', sizeof(arpReq)); -+ xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in)); -+ -+ /* Query ARP table */ -+ mib[0] = CTL_NET; -+ mib[1] = PF_ROUTE; -+ mib[2] = 0; -+ mib[3] = AF_INET; -+ mib[4] = NET_RT_FLAGS; -+ mib[5] = RTF_LLINFO; -+ if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't estimate ARP table size!\n"); -+ return 0; -+ } -+ if ((buf = xmalloc(needed)) == NULL) { -+ debug(28, 0) ("Can't allocate temporary ARP table!\n"); -+ return 0; -+ } -+ if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't retrieve ARP table!\n"); -+ xfree(buf); -+ return 0; -+ } -+ lim = buf + needed; -+ for (next = buf; next < lim; next += rtm->rtm_msglen) { -+ rtm = (struct rt_msghdr *) next; -+ sin = (struct sockaddr_inarp *) (rtm + 1); -+ /*sdl = (struct sockaddr_dl *) (sin + 1);*/ -+#define ROUNDUP(a) \ -+ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) -+ (char *)sdl = (char *)sin + ROUNDUP(sin->sin_len); -+ if (c.s_addr == sin->sin_addr.s_addr) { -+ if (sdl->sdl_alen) -+ { -+ arpReq.arp_ha.sa_len = sizeof(struct sockaddr); -+ arpReq.arp_ha.sa_family = AF_UNSPEC; -+ memcpy(arpReq.arp_ha.sa_data, LLADDR(sdl), sdl->sdl_alen); -+ } -+ } -+ } -+ xfree(buf); -+ if (arpReq.arp_ha.sa_data[0] == 0 && arpReq.arp_ha.sa_data[1] == 0 && -+ arpReq.arp_ha.sa_data[2] == 0 && arpReq.arp_ha.sa_data[3] == 0 && -+ arpReq.arp_ha.sa_data[4] == 0 && arpReq.arp_ha.sa_data[5] == 0) -+ return 0; -+ debug(28, 4) ("Got address %02x:%02x:%02x:%02x:%02x:%02x\n", -+ arpReq.arp_ha.sa_data[0] & 0xff, arpReq.arp_ha.sa_data[1] & 0xff, -+ arpReq.arp_ha.sa_data[2] & 0xff, arpReq.arp_ha.sa_data[3] & 0xff, -+ arpReq.arp_ha.sa_data[4] & 0xff, arpReq.arp_ha.sa_data[5] & 0xff); -+ /* Do lookup */ -+ *Top = splay_splay(&arpReq.arp_ha.sa_data, *Top, aclArpCompare); -+ debug(28, 3) ("aclMatchArp: '%s' %s\n", -+ inet_ntoa(c), splayLastResult ? "NOT found" : "found"); -+ return (0 == splayLastResult); - #else - WRITE ME; - #endif -@@ -2869,6 +2948,21 @@ - if (d1[2] != d2[2]) - return (d1[2] > d2[2]) ? 1 : -1; - #elif defined(_SQUID_SOLARIS_) -+ const unsigned char *d1 = a; -+ const unsigned char *d2 = b; -+ if (d1[0] != d2[0]) -+ return (d1[0] > d2[0]) ? 1 : -1; -+ if (d1[1] != d2[1]) -+ return (d1[1] > d2[1]) ? 1 : -1; -+ if (d1[2] != d2[2]) -+ return (d1[2] > d2[2]) ? 1 : -1; -+ if (d1[3] != d2[3]) -+ return (d1[3] > d2[3]) ? 1 : -1; -+ if (d1[4] != d2[4]) -+ return (d1[4] > d2[4]) ? 1 : -1; -+ if (d1[5] != d2[5]) -+ return (d1[5] > d2[5]) ? 1 : -1; -+#elif defined(_SQUID_FREEBSD_) - const unsigned char *d1 = a; - const unsigned char *d2 = b; - if (d1[0] != d2[0]) diff --git a/www/squid25/Makefile b/www/squid25/Makefile index 07b7554..0019d32 100644 --- a/www/squid25/Makefile +++ b/www/squid25/Makefile @@ -23,7 +23,7 @@ PORTNAME= squid PORTVERSION= 2.5.4 -PORTREVISION= 9 +PORTREVISION= 10 CATEGORIES= www MASTER_SITES= \ ftp://ftp.squid-cache.org/pub/%SUBDIR%/ \ @@ -76,7 +76,18 @@ PATCHFILES= squid-2.5.STABLE4-reconfigure_message.patch \ squid-2.5.STABLE4-ntlm_auth_popups.patch \ squid-2.5.STABLE4-ldap_group-S.patch \ squid-2.5.STABLE4-ipcache_purge.patch \ - squid-2.5.STABLE4-cache_peer_access_ntlm.patch + squid-2.5.STABLE4-cache_peer_access_ntlm.patch \ + squid-2.5.STABLE4-wbinfo_group.patch \ + squid-2.5.STABLE4-SMB_ntlm_auth.patch \ + squid-2.5.STABLE4-miss_access_internal.patch \ + squid-2.5.STABLE4-squidclient_auth.patch \ + squid-2.5.STABLE4-authfixes.patch \ + squid-2.5.STABLE4-arp-FreeBSD.patch \ + squid-2.5.STABLE4-deny_info_reply.patch \ + squid-2.5.STABLE4-authfixes2.patch \ + squid-2.5.STABLE4-reply_body_max_size.patch \ + squid-2.5.STABLE4-digest-abort.patch \ + squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch PATCH_DIST_STRIP= -p1 MAINTAINER= tmseck@netcologne.de diff --git a/www/squid25/distinfo b/www/squid25/distinfo index 73777e6..bdb4bcc 100644 --- a/www/squid25/distinfo +++ b/www/squid25/distinfo @@ -82,3 +82,25 @@ MD5 (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = d76b6163f0806494defe9cba3 SIZE (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = 1022 MD5 (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 94841c505d86a1ab310b817119079e3b SIZE (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 3378 +MD5 (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 4fff0be253f87fa538691497600daf70 +SIZE (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 1105 +MD5 (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 6ee610502b49c00914e2fe986f21db78 +SIZE (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 1924 +MD5 (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 8f4259401052ecae31fa3de4535a624f +SIZE (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 837 +MD5 (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = eff31cbd54adad086d50e0ae7dbe2c6e +SIZE (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = 1107 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 139ab240c01acf6eeed7ead27f0ce387 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 9401 +MD5 (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = bad7a9a59071faf569734f022b35b28f +SIZE (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = 3999 +MD5 (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 97a9af2a33ded35bcef989181318ac71 +SIZE (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 1951 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = b1de702ac773133affa1393c48d04807 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = 2222 +MD5 (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 79beba0e5466279ffbdd4322a3579aeb +SIZE (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 524 +MD5 (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = a0cf9a5451b89bb6d8a8982a14791c15 +SIZE (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = 946 +MD5 (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 8422d34ab797ae07727a5f2fdfe1a832 +SIZE (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 3277 diff --git a/www/squid25/files/patch-helpers_ntlm_auth_SMB_smbval b/www/squid25/files/patch-helpers_ntlm_auth_SMB_smbval deleted file mode 100644 index 754b4aa..0000000 --- a/www/squid25/files/patch-helpers_ntlm_auth_SMB_smbval +++ /dev/null @@ -1,48 +0,0 @@ ---- helpers/ntlm_auth/SMB/smbval/session.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/session.c Fri Jan 16 00:25:57 2004 -@@ -23,7 +23,9 @@ - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - #include <stdlib.h> - ---- helpers/ntlm_auth/SMB/smbval/rfcnb-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/rfcnb-util.c Fri Jan 16 00:26:17 2004 -@@ -24,7 +24,9 @@ - */ - - #include <string.h> -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - - #include "std-includes.h" - #include "rfcnb-priv.h" ---- helpers/ntlm_auth/SMB/smbval/smblib-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib-util.c Fri Jan 16 00:26:39 2004 -@@ -24,7 +24,9 @@ - */ - - #include "smblib-priv.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - - #include "rfcnb.h" ---- helpers/ntlm_auth/SMB/smbval/smblib.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib.c Fri Jan 16 00:26:57 2004 -@@ -25,7 +25,9 @@ - */ - - #include "config.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <ctype.h> - #include <string.h> - diff --git a/www/squid25/files/patch-src_acl.c b/www/squid25/files/patch-src_acl.c deleted file mode 100644 index 727b440..0000000 --- a/www/squid25/files/patch-src_acl.c +++ /dev/null @@ -1,117 +0,0 @@ ---- src/acl.c 2004/02/04 05:45:07 1.1 -+++ src/acl.c 2004/02/04 05:45:16 -@@ -2626,6 +2626,9 @@ - #endif - #include <net/route.h> - #include <net/if.h> -+#ifdef _SQUID_FREEBSD__ -+#include <net/if_arp.h> -+#endif - #if HAVE_NETINET_IF_ETHER_H - #include <netinet/if_ether.h> - #endif -@@ -2846,6 +2849,82 @@ - inet_ntoa(c), splayLastResult ? "NOT found" : "found"); - return (0 == splayLastResult); - } -+#elif defined(_SQUID_FREEBSD_) -+ struct arpreq arpReq; -+ struct sockaddr_in ipAddr; -+ unsigned char ifbuffer[sizeof(struct ifreq) * 64]; -+ struct ifconf ifc; -+ struct ifreq *ifr; -+ int offset; -+ splayNode **Top = dataptr; -+ -+ int mib[6]; -+ size_t needed; -+ char *lim, *buf, *next; -+ struct rt_msghdr *rtm; -+ struct sockaddr_inarp *sin; -+ struct sockaddr_dl *sdl; -+ -+ /* -+ * Set up structures for ARP lookup with blank interface name -+ */ -+ ipAddr.sin_family = AF_INET; -+ ipAddr.sin_port = 0; -+ ipAddr.sin_addr = c; -+ memset(&arpReq, '\0', sizeof(arpReq)); -+ xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in)); -+ -+ /* Query ARP table */ -+ mib[0] = CTL_NET; -+ mib[1] = PF_ROUTE; -+ mib[2] = 0; -+ mib[3] = AF_INET; -+ mib[4] = NET_RT_FLAGS; -+ mib[5] = RTF_LLINFO; -+ if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't estimate ARP table size!\n"); -+ return 0; -+ } -+ if ((buf = xmalloc(needed)) == NULL) { -+ debug(28, 0) ("Can't allocate temporary ARP table!\n"); -+ return 0; -+ } -+ if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't retrieve ARP table!\n"); -+ xfree(buf); -+ return 0; -+ } -+ lim = buf + needed; -+ for (next = buf; next < lim; next += rtm->rtm_msglen) { -+ rtm = (struct rt_msghdr *) next; -+ sin = (struct sockaddr_inarp *) (rtm + 1); -+ /*sdl = (struct sockaddr_dl *) (sin + 1);*/ -+#define ROUNDUP(a) \ -+ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) -+ (char *)sdl = (char *)sin + ROUNDUP(sin->sin_len); -+ if (c.s_addr == sin->sin_addr.s_addr) { -+ if (sdl->sdl_alen) -+ { -+ arpReq.arp_ha.sa_len = sizeof(struct sockaddr); -+ arpReq.arp_ha.sa_family = AF_UNSPEC; -+ memcpy(arpReq.arp_ha.sa_data, LLADDR(sdl), sdl->sdl_alen); -+ } -+ } -+ } -+ xfree(buf); -+ if (arpReq.arp_ha.sa_data[0] == 0 && arpReq.arp_ha.sa_data[1] == 0 && -+ arpReq.arp_ha.sa_data[2] == 0 && arpReq.arp_ha.sa_data[3] == 0 && -+ arpReq.arp_ha.sa_data[4] == 0 && arpReq.arp_ha.sa_data[5] == 0) -+ return 0; -+ debug(28, 4) ("Got address %02x:%02x:%02x:%02x:%02x:%02x\n", -+ arpReq.arp_ha.sa_data[0] & 0xff, arpReq.arp_ha.sa_data[1] & 0xff, -+ arpReq.arp_ha.sa_data[2] & 0xff, arpReq.arp_ha.sa_data[3] & 0xff, -+ arpReq.arp_ha.sa_data[4] & 0xff, arpReq.arp_ha.sa_data[5] & 0xff); -+ /* Do lookup */ -+ *Top = splay_splay(&arpReq.arp_ha.sa_data, *Top, aclArpCompare); -+ debug(28, 3) ("aclMatchArp: '%s' %s\n", -+ inet_ntoa(c), splayLastResult ? "NOT found" : "found"); -+ return (0 == splayLastResult); - #else - WRITE ME; - #endif -@@ -2869,6 +2948,21 @@ - if (d1[2] != d2[2]) - return (d1[2] > d2[2]) ? 1 : -1; - #elif defined(_SQUID_SOLARIS_) -+ const unsigned char *d1 = a; -+ const unsigned char *d2 = b; -+ if (d1[0] != d2[0]) -+ return (d1[0] > d2[0]) ? 1 : -1; -+ if (d1[1] != d2[1]) -+ return (d1[1] > d2[1]) ? 1 : -1; -+ if (d1[2] != d2[2]) -+ return (d1[2] > d2[2]) ? 1 : -1; -+ if (d1[3] != d2[3]) -+ return (d1[3] > d2[3]) ? 1 : -1; -+ if (d1[4] != d2[4]) -+ return (d1[4] > d2[4]) ? 1 : -1; -+ if (d1[5] != d2[5]) -+ return (d1[5] > d2[5]) ? 1 : -1; -+#elif defined(_SQUID_FREEBSD_) - const unsigned char *d1 = a; - const unsigned char *d2 = b; - if (d1[0] != d2[0]) diff --git a/www/squid26/Makefile b/www/squid26/Makefile index 07b7554..0019d32 100644 --- a/www/squid26/Makefile +++ b/www/squid26/Makefile @@ -23,7 +23,7 @@ PORTNAME= squid PORTVERSION= 2.5.4 -PORTREVISION= 9 +PORTREVISION= 10 CATEGORIES= www MASTER_SITES= \ ftp://ftp.squid-cache.org/pub/%SUBDIR%/ \ @@ -76,7 +76,18 @@ PATCHFILES= squid-2.5.STABLE4-reconfigure_message.patch \ squid-2.5.STABLE4-ntlm_auth_popups.patch \ squid-2.5.STABLE4-ldap_group-S.patch \ squid-2.5.STABLE4-ipcache_purge.patch \ - squid-2.5.STABLE4-cache_peer_access_ntlm.patch + squid-2.5.STABLE4-cache_peer_access_ntlm.patch \ + squid-2.5.STABLE4-wbinfo_group.patch \ + squid-2.5.STABLE4-SMB_ntlm_auth.patch \ + squid-2.5.STABLE4-miss_access_internal.patch \ + squid-2.5.STABLE4-squidclient_auth.patch \ + squid-2.5.STABLE4-authfixes.patch \ + squid-2.5.STABLE4-arp-FreeBSD.patch \ + squid-2.5.STABLE4-deny_info_reply.patch \ + squid-2.5.STABLE4-authfixes2.patch \ + squid-2.5.STABLE4-reply_body_max_size.patch \ + squid-2.5.STABLE4-digest-abort.patch \ + squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch PATCH_DIST_STRIP= -p1 MAINTAINER= tmseck@netcologne.de diff --git a/www/squid26/distinfo b/www/squid26/distinfo index 73777e6..bdb4bcc 100644 --- a/www/squid26/distinfo +++ b/www/squid26/distinfo @@ -82,3 +82,25 @@ MD5 (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = d76b6163f0806494defe9cba3 SIZE (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = 1022 MD5 (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 94841c505d86a1ab310b817119079e3b SIZE (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 3378 +MD5 (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 4fff0be253f87fa538691497600daf70 +SIZE (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 1105 +MD5 (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 6ee610502b49c00914e2fe986f21db78 +SIZE (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 1924 +MD5 (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 8f4259401052ecae31fa3de4535a624f +SIZE (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 837 +MD5 (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = eff31cbd54adad086d50e0ae7dbe2c6e +SIZE (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = 1107 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 139ab240c01acf6eeed7ead27f0ce387 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 9401 +MD5 (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = bad7a9a59071faf569734f022b35b28f +SIZE (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = 3999 +MD5 (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 97a9af2a33ded35bcef989181318ac71 +SIZE (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 1951 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = b1de702ac773133affa1393c48d04807 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = 2222 +MD5 (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 79beba0e5466279ffbdd4322a3579aeb +SIZE (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 524 +MD5 (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = a0cf9a5451b89bb6d8a8982a14791c15 +SIZE (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = 946 +MD5 (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 8422d34ab797ae07727a5f2fdfe1a832 +SIZE (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 3277 diff --git a/www/squid26/files/patch-helpers_ntlm_auth_SMB_smbval b/www/squid26/files/patch-helpers_ntlm_auth_SMB_smbval deleted file mode 100644 index 754b4aa..0000000 --- a/www/squid26/files/patch-helpers_ntlm_auth_SMB_smbval +++ /dev/null @@ -1,48 +0,0 @@ ---- helpers/ntlm_auth/SMB/smbval/session.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/session.c Fri Jan 16 00:25:57 2004 -@@ -23,7 +23,9 @@ - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - #include <stdlib.h> - ---- helpers/ntlm_auth/SMB/smbval/rfcnb-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/rfcnb-util.c Fri Jan 16 00:26:17 2004 -@@ -24,7 +24,9 @@ - */ - - #include <string.h> -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - - #include "std-includes.h" - #include "rfcnb-priv.h" ---- helpers/ntlm_auth/SMB/smbval/smblib-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib-util.c Fri Jan 16 00:26:39 2004 -@@ -24,7 +24,9 @@ - */ - - #include "smblib-priv.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - - #include "rfcnb.h" ---- helpers/ntlm_auth/SMB/smbval/smblib.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib.c Fri Jan 16 00:26:57 2004 -@@ -25,7 +25,9 @@ - */ - - #include "config.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <ctype.h> - #include <string.h> - diff --git a/www/squid26/files/patch-src_acl.c b/www/squid26/files/patch-src_acl.c deleted file mode 100644 index 727b440..0000000 --- a/www/squid26/files/patch-src_acl.c +++ /dev/null @@ -1,117 +0,0 @@ ---- src/acl.c 2004/02/04 05:45:07 1.1 -+++ src/acl.c 2004/02/04 05:45:16 -@@ -2626,6 +2626,9 @@ - #endif - #include <net/route.h> - #include <net/if.h> -+#ifdef _SQUID_FREEBSD__ -+#include <net/if_arp.h> -+#endif - #if HAVE_NETINET_IF_ETHER_H - #include <netinet/if_ether.h> - #endif -@@ -2846,6 +2849,82 @@ - inet_ntoa(c), splayLastResult ? "NOT found" : "found"); - return (0 == splayLastResult); - } -+#elif defined(_SQUID_FREEBSD_) -+ struct arpreq arpReq; -+ struct sockaddr_in ipAddr; -+ unsigned char ifbuffer[sizeof(struct ifreq) * 64]; -+ struct ifconf ifc; -+ struct ifreq *ifr; -+ int offset; -+ splayNode **Top = dataptr; -+ -+ int mib[6]; -+ size_t needed; -+ char *lim, *buf, *next; -+ struct rt_msghdr *rtm; -+ struct sockaddr_inarp *sin; -+ struct sockaddr_dl *sdl; -+ -+ /* -+ * Set up structures for ARP lookup with blank interface name -+ */ -+ ipAddr.sin_family = AF_INET; -+ ipAddr.sin_port = 0; -+ ipAddr.sin_addr = c; -+ memset(&arpReq, '\0', sizeof(arpReq)); -+ xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in)); -+ -+ /* Query ARP table */ -+ mib[0] = CTL_NET; -+ mib[1] = PF_ROUTE; -+ mib[2] = 0; -+ mib[3] = AF_INET; -+ mib[4] = NET_RT_FLAGS; -+ mib[5] = RTF_LLINFO; -+ if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't estimate ARP table size!\n"); -+ return 0; -+ } -+ if ((buf = xmalloc(needed)) == NULL) { -+ debug(28, 0) ("Can't allocate temporary ARP table!\n"); -+ return 0; -+ } -+ if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't retrieve ARP table!\n"); -+ xfree(buf); -+ return 0; -+ } -+ lim = buf + needed; -+ for (next = buf; next < lim; next += rtm->rtm_msglen) { -+ rtm = (struct rt_msghdr *) next; -+ sin = (struct sockaddr_inarp *) (rtm + 1); -+ /*sdl = (struct sockaddr_dl *) (sin + 1);*/ -+#define ROUNDUP(a) \ -+ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) -+ (char *)sdl = (char *)sin + ROUNDUP(sin->sin_len); -+ if (c.s_addr == sin->sin_addr.s_addr) { -+ if (sdl->sdl_alen) -+ { -+ arpReq.arp_ha.sa_len = sizeof(struct sockaddr); -+ arpReq.arp_ha.sa_family = AF_UNSPEC; -+ memcpy(arpReq.arp_ha.sa_data, LLADDR(sdl), sdl->sdl_alen); -+ } -+ } -+ } -+ xfree(buf); -+ if (arpReq.arp_ha.sa_data[0] == 0 && arpReq.arp_ha.sa_data[1] == 0 && -+ arpReq.arp_ha.sa_data[2] == 0 && arpReq.arp_ha.sa_data[3] == 0 && -+ arpReq.arp_ha.sa_data[4] == 0 && arpReq.arp_ha.sa_data[5] == 0) -+ return 0; -+ debug(28, 4) ("Got address %02x:%02x:%02x:%02x:%02x:%02x\n", -+ arpReq.arp_ha.sa_data[0] & 0xff, arpReq.arp_ha.sa_data[1] & 0xff, -+ arpReq.arp_ha.sa_data[2] & 0xff, arpReq.arp_ha.sa_data[3] & 0xff, -+ arpReq.arp_ha.sa_data[4] & 0xff, arpReq.arp_ha.sa_data[5] & 0xff); -+ /* Do lookup */ -+ *Top = splay_splay(&arpReq.arp_ha.sa_data, *Top, aclArpCompare); -+ debug(28, 3) ("aclMatchArp: '%s' %s\n", -+ inet_ntoa(c), splayLastResult ? "NOT found" : "found"); -+ return (0 == splayLastResult); - #else - WRITE ME; - #endif -@@ -2869,6 +2948,21 @@ - if (d1[2] != d2[2]) - return (d1[2] > d2[2]) ? 1 : -1; - #elif defined(_SQUID_SOLARIS_) -+ const unsigned char *d1 = a; -+ const unsigned char *d2 = b; -+ if (d1[0] != d2[0]) -+ return (d1[0] > d2[0]) ? 1 : -1; -+ if (d1[1] != d2[1]) -+ return (d1[1] > d2[1]) ? 1 : -1; -+ if (d1[2] != d2[2]) -+ return (d1[2] > d2[2]) ? 1 : -1; -+ if (d1[3] != d2[3]) -+ return (d1[3] > d2[3]) ? 1 : -1; -+ if (d1[4] != d2[4]) -+ return (d1[4] > d2[4]) ? 1 : -1; -+ if (d1[5] != d2[5]) -+ return (d1[5] > d2[5]) ? 1 : -1; -+#elif defined(_SQUID_FREEBSD_) - const unsigned char *d1 = a; - const unsigned char *d2 = b; - if (d1[0] != d2[0]) diff --git a/www/squid27/Makefile b/www/squid27/Makefile index 07b7554..0019d32 100644 --- a/www/squid27/Makefile +++ b/www/squid27/Makefile @@ -23,7 +23,7 @@ PORTNAME= squid PORTVERSION= 2.5.4 -PORTREVISION= 9 +PORTREVISION= 10 CATEGORIES= www MASTER_SITES= \ ftp://ftp.squid-cache.org/pub/%SUBDIR%/ \ @@ -76,7 +76,18 @@ PATCHFILES= squid-2.5.STABLE4-reconfigure_message.patch \ squid-2.5.STABLE4-ntlm_auth_popups.patch \ squid-2.5.STABLE4-ldap_group-S.patch \ squid-2.5.STABLE4-ipcache_purge.patch \ - squid-2.5.STABLE4-cache_peer_access_ntlm.patch + squid-2.5.STABLE4-cache_peer_access_ntlm.patch \ + squid-2.5.STABLE4-wbinfo_group.patch \ + squid-2.5.STABLE4-SMB_ntlm_auth.patch \ + squid-2.5.STABLE4-miss_access_internal.patch \ + squid-2.5.STABLE4-squidclient_auth.patch \ + squid-2.5.STABLE4-authfixes.patch \ + squid-2.5.STABLE4-arp-FreeBSD.patch \ + squid-2.5.STABLE4-deny_info_reply.patch \ + squid-2.5.STABLE4-authfixes2.patch \ + squid-2.5.STABLE4-reply_body_max_size.patch \ + squid-2.5.STABLE4-digest-abort.patch \ + squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch PATCH_DIST_STRIP= -p1 MAINTAINER= tmseck@netcologne.de diff --git a/www/squid27/distinfo b/www/squid27/distinfo index 73777e6..bdb4bcc 100644 --- a/www/squid27/distinfo +++ b/www/squid27/distinfo @@ -82,3 +82,25 @@ MD5 (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = d76b6163f0806494defe9cba3 SIZE (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = 1022 MD5 (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 94841c505d86a1ab310b817119079e3b SIZE (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 3378 +MD5 (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 4fff0be253f87fa538691497600daf70 +SIZE (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 1105 +MD5 (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 6ee610502b49c00914e2fe986f21db78 +SIZE (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 1924 +MD5 (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 8f4259401052ecae31fa3de4535a624f +SIZE (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 837 +MD5 (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = eff31cbd54adad086d50e0ae7dbe2c6e +SIZE (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = 1107 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 139ab240c01acf6eeed7ead27f0ce387 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 9401 +MD5 (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = bad7a9a59071faf569734f022b35b28f +SIZE (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = 3999 +MD5 (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 97a9af2a33ded35bcef989181318ac71 +SIZE (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 1951 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = b1de702ac773133affa1393c48d04807 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = 2222 +MD5 (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 79beba0e5466279ffbdd4322a3579aeb +SIZE (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 524 +MD5 (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = a0cf9a5451b89bb6d8a8982a14791c15 +SIZE (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = 946 +MD5 (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 8422d34ab797ae07727a5f2fdfe1a832 +SIZE (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 3277 diff --git a/www/squid27/files/patch-helpers_ntlm_auth_SMB_smbval b/www/squid27/files/patch-helpers_ntlm_auth_SMB_smbval deleted file mode 100644 index 754b4aa..0000000 --- a/www/squid27/files/patch-helpers_ntlm_auth_SMB_smbval +++ /dev/null @@ -1,48 +0,0 @@ ---- helpers/ntlm_auth/SMB/smbval/session.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/session.c Fri Jan 16 00:25:57 2004 -@@ -23,7 +23,9 @@ - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - #include <stdlib.h> - ---- helpers/ntlm_auth/SMB/smbval/rfcnb-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/rfcnb-util.c Fri Jan 16 00:26:17 2004 -@@ -24,7 +24,9 @@ - */ - - #include <string.h> -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - - #include "std-includes.h" - #include "rfcnb-priv.h" ---- helpers/ntlm_auth/SMB/smbval/smblib-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib-util.c Fri Jan 16 00:26:39 2004 -@@ -24,7 +24,9 @@ - */ - - #include "smblib-priv.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - - #include "rfcnb.h" ---- helpers/ntlm_auth/SMB/smbval/smblib.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib.c Fri Jan 16 00:26:57 2004 -@@ -25,7 +25,9 @@ - */ - - #include "config.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <ctype.h> - #include <string.h> - diff --git a/www/squid27/files/patch-src_acl.c b/www/squid27/files/patch-src_acl.c deleted file mode 100644 index 727b440..0000000 --- a/www/squid27/files/patch-src_acl.c +++ /dev/null @@ -1,117 +0,0 @@ ---- src/acl.c 2004/02/04 05:45:07 1.1 -+++ src/acl.c 2004/02/04 05:45:16 -@@ -2626,6 +2626,9 @@ - #endif - #include <net/route.h> - #include <net/if.h> -+#ifdef _SQUID_FREEBSD__ -+#include <net/if_arp.h> -+#endif - #if HAVE_NETINET_IF_ETHER_H - #include <netinet/if_ether.h> - #endif -@@ -2846,6 +2849,82 @@ - inet_ntoa(c), splayLastResult ? "NOT found" : "found"); - return (0 == splayLastResult); - } -+#elif defined(_SQUID_FREEBSD_) -+ struct arpreq arpReq; -+ struct sockaddr_in ipAddr; -+ unsigned char ifbuffer[sizeof(struct ifreq) * 64]; -+ struct ifconf ifc; -+ struct ifreq *ifr; -+ int offset; -+ splayNode **Top = dataptr; -+ -+ int mib[6]; -+ size_t needed; -+ char *lim, *buf, *next; -+ struct rt_msghdr *rtm; -+ struct sockaddr_inarp *sin; -+ struct sockaddr_dl *sdl; -+ -+ /* -+ * Set up structures for ARP lookup with blank interface name -+ */ -+ ipAddr.sin_family = AF_INET; -+ ipAddr.sin_port = 0; -+ ipAddr.sin_addr = c; -+ memset(&arpReq, '\0', sizeof(arpReq)); -+ xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in)); -+ -+ /* Query ARP table */ -+ mib[0] = CTL_NET; -+ mib[1] = PF_ROUTE; -+ mib[2] = 0; -+ mib[3] = AF_INET; -+ mib[4] = NET_RT_FLAGS; -+ mib[5] = RTF_LLINFO; -+ if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't estimate ARP table size!\n"); -+ return 0; -+ } -+ if ((buf = xmalloc(needed)) == NULL) { -+ debug(28, 0) ("Can't allocate temporary ARP table!\n"); -+ return 0; -+ } -+ if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't retrieve ARP table!\n"); -+ xfree(buf); -+ return 0; -+ } -+ lim = buf + needed; -+ for (next = buf; next < lim; next += rtm->rtm_msglen) { -+ rtm = (struct rt_msghdr *) next; -+ sin = (struct sockaddr_inarp *) (rtm + 1); -+ /*sdl = (struct sockaddr_dl *) (sin + 1);*/ -+#define ROUNDUP(a) \ -+ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) -+ (char *)sdl = (char *)sin + ROUNDUP(sin->sin_len); -+ if (c.s_addr == sin->sin_addr.s_addr) { -+ if (sdl->sdl_alen) -+ { -+ arpReq.arp_ha.sa_len = sizeof(struct sockaddr); -+ arpReq.arp_ha.sa_family = AF_UNSPEC; -+ memcpy(arpReq.arp_ha.sa_data, LLADDR(sdl), sdl->sdl_alen); -+ } -+ } -+ } -+ xfree(buf); -+ if (arpReq.arp_ha.sa_data[0] == 0 && arpReq.arp_ha.sa_data[1] == 0 && -+ arpReq.arp_ha.sa_data[2] == 0 && arpReq.arp_ha.sa_data[3] == 0 && -+ arpReq.arp_ha.sa_data[4] == 0 && arpReq.arp_ha.sa_data[5] == 0) -+ return 0; -+ debug(28, 4) ("Got address %02x:%02x:%02x:%02x:%02x:%02x\n", -+ arpReq.arp_ha.sa_data[0] & 0xff, arpReq.arp_ha.sa_data[1] & 0xff, -+ arpReq.arp_ha.sa_data[2] & 0xff, arpReq.arp_ha.sa_data[3] & 0xff, -+ arpReq.arp_ha.sa_data[4] & 0xff, arpReq.arp_ha.sa_data[5] & 0xff); -+ /* Do lookup */ -+ *Top = splay_splay(&arpReq.arp_ha.sa_data, *Top, aclArpCompare); -+ debug(28, 3) ("aclMatchArp: '%s' %s\n", -+ inet_ntoa(c), splayLastResult ? "NOT found" : "found"); -+ return (0 == splayLastResult); - #else - WRITE ME; - #endif -@@ -2869,6 +2948,21 @@ - if (d1[2] != d2[2]) - return (d1[2] > d2[2]) ? 1 : -1; - #elif defined(_SQUID_SOLARIS_) -+ const unsigned char *d1 = a; -+ const unsigned char *d2 = b; -+ if (d1[0] != d2[0]) -+ return (d1[0] > d2[0]) ? 1 : -1; -+ if (d1[1] != d2[1]) -+ return (d1[1] > d2[1]) ? 1 : -1; -+ if (d1[2] != d2[2]) -+ return (d1[2] > d2[2]) ? 1 : -1; -+ if (d1[3] != d2[3]) -+ return (d1[3] > d2[3]) ? 1 : -1; -+ if (d1[4] != d2[4]) -+ return (d1[4] > d2[4]) ? 1 : -1; -+ if (d1[5] != d2[5]) -+ return (d1[5] > d2[5]) ? 1 : -1; -+#elif defined(_SQUID_FREEBSD_) - const unsigned char *d1 = a; - const unsigned char *d2 = b; - if (d1[0] != d2[0]) diff --git a/www/squid30/Makefile b/www/squid30/Makefile index 07b7554..0019d32 100644 --- a/www/squid30/Makefile +++ b/www/squid30/Makefile @@ -23,7 +23,7 @@ PORTNAME= squid PORTVERSION= 2.5.4 -PORTREVISION= 9 +PORTREVISION= 10 CATEGORIES= www MASTER_SITES= \ ftp://ftp.squid-cache.org/pub/%SUBDIR%/ \ @@ -76,7 +76,18 @@ PATCHFILES= squid-2.5.STABLE4-reconfigure_message.patch \ squid-2.5.STABLE4-ntlm_auth_popups.patch \ squid-2.5.STABLE4-ldap_group-S.patch \ squid-2.5.STABLE4-ipcache_purge.patch \ - squid-2.5.STABLE4-cache_peer_access_ntlm.patch + squid-2.5.STABLE4-cache_peer_access_ntlm.patch \ + squid-2.5.STABLE4-wbinfo_group.patch \ + squid-2.5.STABLE4-SMB_ntlm_auth.patch \ + squid-2.5.STABLE4-miss_access_internal.patch \ + squid-2.5.STABLE4-squidclient_auth.patch \ + squid-2.5.STABLE4-authfixes.patch \ + squid-2.5.STABLE4-arp-FreeBSD.patch \ + squid-2.5.STABLE4-deny_info_reply.patch \ + squid-2.5.STABLE4-authfixes2.patch \ + squid-2.5.STABLE4-reply_body_max_size.patch \ + squid-2.5.STABLE4-digest-abort.patch \ + squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch PATCH_DIST_STRIP= -p1 MAINTAINER= tmseck@netcologne.de diff --git a/www/squid30/distinfo b/www/squid30/distinfo index 73777e6..bdb4bcc 100644 --- a/www/squid30/distinfo +++ b/www/squid30/distinfo @@ -82,3 +82,25 @@ MD5 (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = d76b6163f0806494defe9cba3 SIZE (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = 1022 MD5 (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 94841c505d86a1ab310b817119079e3b SIZE (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 3378 +MD5 (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 4fff0be253f87fa538691497600daf70 +SIZE (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 1105 +MD5 (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 6ee610502b49c00914e2fe986f21db78 +SIZE (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 1924 +MD5 (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 8f4259401052ecae31fa3de4535a624f +SIZE (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 837 +MD5 (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = eff31cbd54adad086d50e0ae7dbe2c6e +SIZE (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = 1107 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 139ab240c01acf6eeed7ead27f0ce387 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 9401 +MD5 (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = bad7a9a59071faf569734f022b35b28f +SIZE (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = 3999 +MD5 (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 97a9af2a33ded35bcef989181318ac71 +SIZE (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 1951 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = b1de702ac773133affa1393c48d04807 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = 2222 +MD5 (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 79beba0e5466279ffbdd4322a3579aeb +SIZE (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 524 +MD5 (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = a0cf9a5451b89bb6d8a8982a14791c15 +SIZE (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = 946 +MD5 (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 8422d34ab797ae07727a5f2fdfe1a832 +SIZE (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 3277 diff --git a/www/squid30/files/patch-helpers_ntlm_auth_SMB_smbval b/www/squid30/files/patch-helpers_ntlm_auth_SMB_smbval deleted file mode 100644 index 754b4aa..0000000 --- a/www/squid30/files/patch-helpers_ntlm_auth_SMB_smbval +++ /dev/null @@ -1,48 +0,0 @@ ---- helpers/ntlm_auth/SMB/smbval/session.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/session.c Fri Jan 16 00:25:57 2004 -@@ -23,7 +23,9 @@ - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - #include <stdlib.h> - ---- helpers/ntlm_auth/SMB/smbval/rfcnb-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/rfcnb-util.c Fri Jan 16 00:26:17 2004 -@@ -24,7 +24,9 @@ - */ - - #include <string.h> -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - - #include "std-includes.h" - #include "rfcnb-priv.h" ---- helpers/ntlm_auth/SMB/smbval/smblib-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib-util.c Fri Jan 16 00:26:39 2004 -@@ -24,7 +24,9 @@ - */ - - #include "smblib-priv.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - - #include "rfcnb.h" ---- helpers/ntlm_auth/SMB/smbval/smblib.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib.c Fri Jan 16 00:26:57 2004 -@@ -25,7 +25,9 @@ - */ - - #include "config.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <ctype.h> - #include <string.h> - diff --git a/www/squid30/files/patch-src_acl.c b/www/squid30/files/patch-src_acl.c deleted file mode 100644 index 727b440..0000000 --- a/www/squid30/files/patch-src_acl.c +++ /dev/null @@ -1,117 +0,0 @@ ---- src/acl.c 2004/02/04 05:45:07 1.1 -+++ src/acl.c 2004/02/04 05:45:16 -@@ -2626,6 +2626,9 @@ - #endif - #include <net/route.h> - #include <net/if.h> -+#ifdef _SQUID_FREEBSD__ -+#include <net/if_arp.h> -+#endif - #if HAVE_NETINET_IF_ETHER_H - #include <netinet/if_ether.h> - #endif -@@ -2846,6 +2849,82 @@ - inet_ntoa(c), splayLastResult ? "NOT found" : "found"); - return (0 == splayLastResult); - } -+#elif defined(_SQUID_FREEBSD_) -+ struct arpreq arpReq; -+ struct sockaddr_in ipAddr; -+ unsigned char ifbuffer[sizeof(struct ifreq) * 64]; -+ struct ifconf ifc; -+ struct ifreq *ifr; -+ int offset; -+ splayNode **Top = dataptr; -+ -+ int mib[6]; -+ size_t needed; -+ char *lim, *buf, *next; -+ struct rt_msghdr *rtm; -+ struct sockaddr_inarp *sin; -+ struct sockaddr_dl *sdl; -+ -+ /* -+ * Set up structures for ARP lookup with blank interface name -+ */ -+ ipAddr.sin_family = AF_INET; -+ ipAddr.sin_port = 0; -+ ipAddr.sin_addr = c; -+ memset(&arpReq, '\0', sizeof(arpReq)); -+ xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in)); -+ -+ /* Query ARP table */ -+ mib[0] = CTL_NET; -+ mib[1] = PF_ROUTE; -+ mib[2] = 0; -+ mib[3] = AF_INET; -+ mib[4] = NET_RT_FLAGS; -+ mib[5] = RTF_LLINFO; -+ if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't estimate ARP table size!\n"); -+ return 0; -+ } -+ if ((buf = xmalloc(needed)) == NULL) { -+ debug(28, 0) ("Can't allocate temporary ARP table!\n"); -+ return 0; -+ } -+ if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't retrieve ARP table!\n"); -+ xfree(buf); -+ return 0; -+ } -+ lim = buf + needed; -+ for (next = buf; next < lim; next += rtm->rtm_msglen) { -+ rtm = (struct rt_msghdr *) next; -+ sin = (struct sockaddr_inarp *) (rtm + 1); -+ /*sdl = (struct sockaddr_dl *) (sin + 1);*/ -+#define ROUNDUP(a) \ -+ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) -+ (char *)sdl = (char *)sin + ROUNDUP(sin->sin_len); -+ if (c.s_addr == sin->sin_addr.s_addr) { -+ if (sdl->sdl_alen) -+ { -+ arpReq.arp_ha.sa_len = sizeof(struct sockaddr); -+ arpReq.arp_ha.sa_family = AF_UNSPEC; -+ memcpy(arpReq.arp_ha.sa_data, LLADDR(sdl), sdl->sdl_alen); -+ } -+ } -+ } -+ xfree(buf); -+ if (arpReq.arp_ha.sa_data[0] == 0 && arpReq.arp_ha.sa_data[1] == 0 && -+ arpReq.arp_ha.sa_data[2] == 0 && arpReq.arp_ha.sa_data[3] == 0 && -+ arpReq.arp_ha.sa_data[4] == 0 && arpReq.arp_ha.sa_data[5] == 0) -+ return 0; -+ debug(28, 4) ("Got address %02x:%02x:%02x:%02x:%02x:%02x\n", -+ arpReq.arp_ha.sa_data[0] & 0xff, arpReq.arp_ha.sa_data[1] & 0xff, -+ arpReq.arp_ha.sa_data[2] & 0xff, arpReq.arp_ha.sa_data[3] & 0xff, -+ arpReq.arp_ha.sa_data[4] & 0xff, arpReq.arp_ha.sa_data[5] & 0xff); -+ /* Do lookup */ -+ *Top = splay_splay(&arpReq.arp_ha.sa_data, *Top, aclArpCompare); -+ debug(28, 3) ("aclMatchArp: '%s' %s\n", -+ inet_ntoa(c), splayLastResult ? "NOT found" : "found"); -+ return (0 == splayLastResult); - #else - WRITE ME; - #endif -@@ -2869,6 +2948,21 @@ - if (d1[2] != d2[2]) - return (d1[2] > d2[2]) ? 1 : -1; - #elif defined(_SQUID_SOLARIS_) -+ const unsigned char *d1 = a; -+ const unsigned char *d2 = b; -+ if (d1[0] != d2[0]) -+ return (d1[0] > d2[0]) ? 1 : -1; -+ if (d1[1] != d2[1]) -+ return (d1[1] > d2[1]) ? 1 : -1; -+ if (d1[2] != d2[2]) -+ return (d1[2] > d2[2]) ? 1 : -1; -+ if (d1[3] != d2[3]) -+ return (d1[3] > d2[3]) ? 1 : -1; -+ if (d1[4] != d2[4]) -+ return (d1[4] > d2[4]) ? 1 : -1; -+ if (d1[5] != d2[5]) -+ return (d1[5] > d2[5]) ? 1 : -1; -+#elif defined(_SQUID_FREEBSD_) - const unsigned char *d1 = a; - const unsigned char *d2 = b; - if (d1[0] != d2[0]) diff --git a/www/squid31/Makefile b/www/squid31/Makefile index 07b7554..0019d32 100644 --- a/www/squid31/Makefile +++ b/www/squid31/Makefile @@ -23,7 +23,7 @@ PORTNAME= squid PORTVERSION= 2.5.4 -PORTREVISION= 9 +PORTREVISION= 10 CATEGORIES= www MASTER_SITES= \ ftp://ftp.squid-cache.org/pub/%SUBDIR%/ \ @@ -76,7 +76,18 @@ PATCHFILES= squid-2.5.STABLE4-reconfigure_message.patch \ squid-2.5.STABLE4-ntlm_auth_popups.patch \ squid-2.5.STABLE4-ldap_group-S.patch \ squid-2.5.STABLE4-ipcache_purge.patch \ - squid-2.5.STABLE4-cache_peer_access_ntlm.patch + squid-2.5.STABLE4-cache_peer_access_ntlm.patch \ + squid-2.5.STABLE4-wbinfo_group.patch \ + squid-2.5.STABLE4-SMB_ntlm_auth.patch \ + squid-2.5.STABLE4-miss_access_internal.patch \ + squid-2.5.STABLE4-squidclient_auth.patch \ + squid-2.5.STABLE4-authfixes.patch \ + squid-2.5.STABLE4-arp-FreeBSD.patch \ + squid-2.5.STABLE4-deny_info_reply.patch \ + squid-2.5.STABLE4-authfixes2.patch \ + squid-2.5.STABLE4-reply_body_max_size.patch \ + squid-2.5.STABLE4-digest-abort.patch \ + squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch PATCH_DIST_STRIP= -p1 MAINTAINER= tmseck@netcologne.de diff --git a/www/squid31/distinfo b/www/squid31/distinfo index 73777e6..bdb4bcc 100644 --- a/www/squid31/distinfo +++ b/www/squid31/distinfo @@ -82,3 +82,25 @@ MD5 (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = d76b6163f0806494defe9cba3 SIZE (squid2.5/squid-2.5.STABLE4-ipcache_purge.patch) = 1022 MD5 (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 94841c505d86a1ab310b817119079e3b SIZE (squid2.5/squid-2.5.STABLE4-cache_peer_access_ntlm.patch) = 3378 +MD5 (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 4fff0be253f87fa538691497600daf70 +SIZE (squid2.5/squid-2.5.STABLE4-wbinfo_group.patch) = 1105 +MD5 (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 6ee610502b49c00914e2fe986f21db78 +SIZE (squid2.5/squid-2.5.STABLE4-SMB_ntlm_auth.patch) = 1924 +MD5 (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 8f4259401052ecae31fa3de4535a624f +SIZE (squid2.5/squid-2.5.STABLE4-miss_access_internal.patch) = 837 +MD5 (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = eff31cbd54adad086d50e0ae7dbe2c6e +SIZE (squid2.5/squid-2.5.STABLE4-squidclient_auth.patch) = 1107 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 139ab240c01acf6eeed7ead27f0ce387 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes.patch) = 9401 +MD5 (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = bad7a9a59071faf569734f022b35b28f +SIZE (squid2.5/squid-2.5.STABLE4-arp-FreeBSD.patch) = 3999 +MD5 (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 97a9af2a33ded35bcef989181318ac71 +SIZE (squid2.5/squid-2.5.STABLE4-deny_info_reply.patch) = 1951 +MD5 (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = b1de702ac773133affa1393c48d04807 +SIZE (squid2.5/squid-2.5.STABLE4-authfixes2.patch) = 2222 +MD5 (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 79beba0e5466279ffbdd4322a3579aeb +SIZE (squid2.5/squid-2.5.STABLE4-reply_body_max_size.patch) = 524 +MD5 (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = a0cf9a5451b89bb6d8a8982a14791c15 +SIZE (squid2.5/squid-2.5.STABLE4-digest-abort.patch) = 946 +MD5 (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 8422d34ab797ae07727a5f2fdfe1a832 +SIZE (squid2.5/squid-2.5.STABLE4-ntlm_auth_user_hash_pointer-leak.patch) = 3277 diff --git a/www/squid31/files/patch-helpers_ntlm_auth_SMB_smbval b/www/squid31/files/patch-helpers_ntlm_auth_SMB_smbval deleted file mode 100644 index 754b4aa..0000000 --- a/www/squid31/files/patch-helpers_ntlm_auth_SMB_smbval +++ /dev/null @@ -1,48 +0,0 @@ ---- helpers/ntlm_auth/SMB/smbval/session.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/session.c Fri Jan 16 00:25:57 2004 -@@ -23,7 +23,9 @@ - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. - */ - -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - #include <stdlib.h> - ---- helpers/ntlm_auth/SMB/smbval/rfcnb-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/rfcnb-util.c Fri Jan 16 00:26:17 2004 -@@ -24,7 +24,9 @@ - */ - - #include <string.h> -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - - #include "std-includes.h" - #include "rfcnb-priv.h" ---- helpers/ntlm_auth/SMB/smbval/smblib-util.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib-util.c Fri Jan 16 00:26:39 2004 -@@ -24,7 +24,9 @@ - */ - - #include "smblib-priv.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <string.h> - - #include "rfcnb.h" ---- helpers/ntlm_auth/SMB/smbval/smblib.c.orig Fri Jan 16 00:24:31 2004 -+++ helpers/ntlm_auth/SMB/smbval/smblib.c Fri Jan 16 00:26:57 2004 -@@ -25,7 +25,9 @@ - */ - - #include "config.h" -+#if !defined(__FreeBSD__) - #include <malloc.h> -+#endif - #include <ctype.h> - #include <string.h> - diff --git a/www/squid31/files/patch-src_acl.c b/www/squid31/files/patch-src_acl.c deleted file mode 100644 index 727b440..0000000 --- a/www/squid31/files/patch-src_acl.c +++ /dev/null @@ -1,117 +0,0 @@ ---- src/acl.c 2004/02/04 05:45:07 1.1 -+++ src/acl.c 2004/02/04 05:45:16 -@@ -2626,6 +2626,9 @@ - #endif - #include <net/route.h> - #include <net/if.h> -+#ifdef _SQUID_FREEBSD__ -+#include <net/if_arp.h> -+#endif - #if HAVE_NETINET_IF_ETHER_H - #include <netinet/if_ether.h> - #endif -@@ -2846,6 +2849,82 @@ - inet_ntoa(c), splayLastResult ? "NOT found" : "found"); - return (0 == splayLastResult); - } -+#elif defined(_SQUID_FREEBSD_) -+ struct arpreq arpReq; -+ struct sockaddr_in ipAddr; -+ unsigned char ifbuffer[sizeof(struct ifreq) * 64]; -+ struct ifconf ifc; -+ struct ifreq *ifr; -+ int offset; -+ splayNode **Top = dataptr; -+ -+ int mib[6]; -+ size_t needed; -+ char *lim, *buf, *next; -+ struct rt_msghdr *rtm; -+ struct sockaddr_inarp *sin; -+ struct sockaddr_dl *sdl; -+ -+ /* -+ * Set up structures for ARP lookup with blank interface name -+ */ -+ ipAddr.sin_family = AF_INET; -+ ipAddr.sin_port = 0; -+ ipAddr.sin_addr = c; -+ memset(&arpReq, '\0', sizeof(arpReq)); -+ xmemcpy(&arpReq.arp_pa, &ipAddr, sizeof(struct sockaddr_in)); -+ -+ /* Query ARP table */ -+ mib[0] = CTL_NET; -+ mib[1] = PF_ROUTE; -+ mib[2] = 0; -+ mib[3] = AF_INET; -+ mib[4] = NET_RT_FLAGS; -+ mib[5] = RTF_LLINFO; -+ if (sysctl(mib, 6, NULL, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't estimate ARP table size!\n"); -+ return 0; -+ } -+ if ((buf = xmalloc(needed)) == NULL) { -+ debug(28, 0) ("Can't allocate temporary ARP table!\n"); -+ return 0; -+ } -+ if (sysctl(mib, 6, buf, &needed, NULL, 0) < 0) { -+ debug(28, 0) ("Can't retrieve ARP table!\n"); -+ xfree(buf); -+ return 0; -+ } -+ lim = buf + needed; -+ for (next = buf; next < lim; next += rtm->rtm_msglen) { -+ rtm = (struct rt_msghdr *) next; -+ sin = (struct sockaddr_inarp *) (rtm + 1); -+ /*sdl = (struct sockaddr_dl *) (sin + 1);*/ -+#define ROUNDUP(a) \ -+ ((a) > 0 ? (1 + (((a) - 1) | (sizeof(long) - 1))) : sizeof(long)) -+ (char *)sdl = (char *)sin + ROUNDUP(sin->sin_len); -+ if (c.s_addr == sin->sin_addr.s_addr) { -+ if (sdl->sdl_alen) -+ { -+ arpReq.arp_ha.sa_len = sizeof(struct sockaddr); -+ arpReq.arp_ha.sa_family = AF_UNSPEC; -+ memcpy(arpReq.arp_ha.sa_data, LLADDR(sdl), sdl->sdl_alen); -+ } -+ } -+ } -+ xfree(buf); -+ if (arpReq.arp_ha.sa_data[0] == 0 && arpReq.arp_ha.sa_data[1] == 0 && -+ arpReq.arp_ha.sa_data[2] == 0 && arpReq.arp_ha.sa_data[3] == 0 && -+ arpReq.arp_ha.sa_data[4] == 0 && arpReq.arp_ha.sa_data[5] == 0) -+ return 0; -+ debug(28, 4) ("Got address %02x:%02x:%02x:%02x:%02x:%02x\n", -+ arpReq.arp_ha.sa_data[0] & 0xff, arpReq.arp_ha.sa_data[1] & 0xff, -+ arpReq.arp_ha.sa_data[2] & 0xff, arpReq.arp_ha.sa_data[3] & 0xff, -+ arpReq.arp_ha.sa_data[4] & 0xff, arpReq.arp_ha.sa_data[5] & 0xff); -+ /* Do lookup */ -+ *Top = splay_splay(&arpReq.arp_ha.sa_data, *Top, aclArpCompare); -+ debug(28, 3) ("aclMatchArp: '%s' %s\n", -+ inet_ntoa(c), splayLastResult ? "NOT found" : "found"); -+ return (0 == splayLastResult); - #else - WRITE ME; - #endif -@@ -2869,6 +2948,21 @@ - if (d1[2] != d2[2]) - return (d1[2] > d2[2]) ? 1 : -1; - #elif defined(_SQUID_SOLARIS_) -+ const unsigned char *d1 = a; -+ const unsigned char *d2 = b; -+ if (d1[0] != d2[0]) -+ return (d1[0] > d2[0]) ? 1 : -1; -+ if (d1[1] != d2[1]) -+ return (d1[1] > d2[1]) ? 1 : -1; -+ if (d1[2] != d2[2]) -+ return (d1[2] > d2[2]) ? 1 : -1; -+ if (d1[3] != d2[3]) -+ return (d1[3] > d2[3]) ? 1 : -1; -+ if (d1[4] != d2[4]) -+ return (d1[4] > d2[4]) ? 1 : -1; -+ if (d1[5] != d2[5]) -+ return (d1[5] > d2[5]) ? 1 : -1; -+#elif defined(_SQUID_FREEBSD_) - const unsigned char *d1 = a; - const unsigned char *d2 = b; - if (d1[0] != d2[0]) |