You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							82 lines
						
					
					
						
							3.4 KiB
						
					
					
				
			
		
		
	
	
							82 lines
						
					
					
						
							3.4 KiB
						
					
					
				# --- SDE-COPYRIGHT-NOTE-BEGIN --- | 
						|
# This copyright note is auto-generated by ./scripts/Create-CopyPatch. | 
						|
# | 
						|
# Filename: package/.../tcp_wrappers/0011-tcp_wrappers-7.6-cidr-support.patch | 
						|
# Copyright (C) 2011 The OpenSDE Project | 
						|
# | 
						|
# More information can be found in the files COPYING and README. | 
						|
# | 
						|
# This patch file is dual-licensed. It is available under the license the | 
						|
# patched project is licensed under, as long as it is an OpenSource license | 
						|
# as defined at http://www.opensource.org/ (e.g. BSD, X11) or under the terms | 
						|
# of the GNU General Public License as published by the Free Software | 
						|
# Foundation; either version 2 of the License, or (at your option) any later | 
						|
# version. | 
						|
# --- SDE-COPYRIGHT-NOTE-END --- | 
						|
 | 
						|
diff -ruN tcp_wrappers_7.6.orig/hosts_access.5 tcp_wrappers_7.6/hosts_access.5 | 
						|
--- tcp_wrappers_7.6.orig/hosts_access.5	2003-08-21 03:15:36.000000000 +0200 | 
						|
+++ tcp_wrappers_7.6/hosts_access.5	2003-08-21 03:15:31.000000000 +0200 | 
						|
@@ -90,6 +90,10 @@ | 
						|
 pattern `131.155.72.0/255.255.254.0\' matches every address in the | 
						|
 range `131.155.72.0\' through `131.155.73.255\'. | 
						|
 .IP \(bu | 
						|
+An expression of the form `n.n.n.n/mm' is interpreted as a | 
						|
+`net/masklength' pair, where `mm' is the number of consecutive `1' | 
						|
+bits in the netmask applied to the `n.n.n.n' address. | 
						|
+.IP \(bu | 
						|
 An expression of the form `[n:n:n:n:n:n:n:n]/m\' is interpreted as a | 
						|
 `[net]/prefixlen\' pair. An IPv6 host address is matched if | 
						|
 `prefixlen\' bits of `net\' is equal to the `prefixlen\' bits of the | 
						|
diff -ruN tcp_wrappers_7.6.orig/hosts_access.c tcp_wrappers_7.6/hosts_access.c | 
						|
--- tcp_wrappers_7.6.orig/hosts_access.c	2003-08-21 03:15:36.000000000 +0200 | 
						|
+++ tcp_wrappers_7.6/hosts_access.c	2003-08-21 03:09:30.000000000 +0200 | 
						|
@@ -417,7 +417,8 @@ | 
						|
     if ((addr = dot_quad_addr(string)) == INADDR_NONE) | 
						|
 	return (NO); | 
						|
     if ((net = dot_quad_addr(net_tok)) == INADDR_NONE | 
						|
-	|| (mask = dot_quad_addr(mask_tok)) == INADDR_NONE) { | 
						|
+	|| ((mask = dot_quad_addr(mask_tok)) == INADDR_NONE | 
						|
+	    && (mask = cidr_mask_addr(mask_tok)) == 0)) { | 
						|
 #ifndef INET6 | 
						|
 	tcpd_warn("bad net/mask expression: %s/%s", net_tok, mask_tok); | 
						|
 #endif | 
						|
diff -ruN tcp_wrappers_7.6.orig/misc.c tcp_wrappers_7.6/misc.c | 
						|
--- tcp_wrappers_7.6.orig/misc.c	2003-08-21 03:15:36.000000000 +0200 | 
						|
+++ tcp_wrappers_7.6/misc.c	2003-08-21 03:09:30.000000000 +0200 | 
						|
@@ -107,3 +107,17 @@ | 
						|
     } | 
						|
     return (runs == 4 ? inet_addr(str) : INADDR_NONE); | 
						|
 } | 
						|
+ | 
						|
+/* cidr_mask_addr - convert cidr netmask length to internal form */ | 
						|
+ | 
						|
+unsigned long cidr_mask_addr(str) | 
						|
+char   *str; | 
						|
+{ | 
						|
+    int     maskbits; | 
						|
+ | 
						|
+    maskbits = atoi(str); | 
						|
+    if (maskbits < 1 || maskbits > 32) | 
						|
+	return (0); | 
						|
+    return htonl(0xFFFFFFFF << (32 - maskbits)); | 
						|
+} | 
						|
+ | 
						|
diff -ruN tcp_wrappers_7.6.orig/tcpdchk.c tcp_wrappers_7.6/tcpdchk.c | 
						|
--- tcp_wrappers_7.6.orig/tcpdchk.c	2003-08-21 03:15:36.000000000 +0200 | 
						|
+++ tcp_wrappers_7.6/tcpdchk.c	2003-08-21 03:09:30.000000000 +0200 | 
						|
@@ -497,12 +497,12 @@ | 
						|
 	int mask_len; | 
						|
  | 
						|
 	if ((dot_quad_addr(pat) == INADDR_NONE | 
						|
-	    || dot_quad_addr(mask) == INADDR_NONE) | 
						|
+	    || dot_quad_addr(mask) == INADDR_NONE && cidr_mask_addr(mask) == 0) | 
						|
 	    && (!is_inet6_addr(pat) | 
						|
 		|| ((mask_len = atoi(mask)) < 0 || mask_len > 128))) | 
						|
 #else | 
						|
 	if (dot_quad_addr(pat) == INADDR_NONE | 
						|
-	    || dot_quad_addr(mask) == INADDR_NONE) | 
						|
+	    || dot_quad_addr(mask) == INADDR_NONE && cidr_mask_addr(mask) == 0) | 
						|
 #endif | 
						|
 	    tcpd_warn("%s/%s: bad net/mask pattern", pat, mask); | 
						|
     } else if (STR_EQ(pat, "FAIL")) {		/* obsolete */
 | 
						|
 |