[java-opensaml COMMIT] in /trunk/opensaml-util/src: main/java/org/opensaml/util/net/IPRange.java test/java/org/opensa...

noreply at shibboleth.net noreply at shibboleth.net
Mon Sep 19 21:22:58 BST 2011


Author: iay
Date: Mon Sep 19 21:22:58 2011
New Revision: 2892

URL: http://svn.shibboleth.net/view/java-opensaml?rev=2892&view=rev
Log:
Permit compressed IPv6 addresses.

Modified:
    trunk/opensaml-util/src/main/java/org/opensaml/util/net/IPRange.java
    trunk/opensaml-util/src/test/java/org/opensaml/util/net/IPRangeTest.java

Modified: trunk/opensaml-util/src/main/java/org/opensaml/util/net/IPRange.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-util/src/main/java/org/opensaml/util/net/IPRange.java?rev=2892&r1=2891&r2=2892&view=diff
==============================================================================
--- trunk/opensaml-util/src/main/java/org/opensaml/util/net/IPRange.java (original)
+++ trunk/opensaml-util/src/main/java/org/opensaml/util/net/IPRange.java Mon Sep 19 21:22:58 2011
@@ -85,19 +85,21 @@
     /**
      * Validate an IPv6 address for use as the base of a CIDR block.
      * 
+     * Just check that any non-empty components are valid hexadecimal integers
+     * in the right range; leave most of the hard work to the {@link InetAddress} parser. 
+     * 
      * Throws IllegalArgumentException if validation fails.
      * 
      * @param address the address to validate
      */
     private static void validateV6Address(final String address) {
         String[] components = address.split(":");
-        if (components.length != 8) {
-            throw new IllegalArgumentException("IPv6 address should have eight components");
-        }
         for (String component : components) {
-            int value = Integer.parseInt(component, 16);
-            if (value < 0 || (value > 0xFFFF)) {
-                throw new IllegalArgumentException("IPv6 component range error: " + component);
+            if (component.length() != 0) {
+                int value = Integer.parseInt(component, 16);
+                if (value < 0 || (value > 0xFFFF)) {
+                    throw new IllegalArgumentException("IPv6 component range error: " + component);
+                }
             }
         }
     }

Modified: trunk/opensaml-util/src/test/java/org/opensaml/util/net/IPRangeTest.java
URL: http://svn.shibboleth.net/view/java-opensaml/trunk/opensaml-util/src/test/java/org/opensaml/util/net/IPRangeTest.java?rev=2892&r1=2891&r2=2892&view=diff
==============================================================================
--- trunk/opensaml-util/src/test/java/org/opensaml/util/net/IPRangeTest.java (original)
+++ trunk/opensaml-util/src/test/java/org/opensaml/util/net/IPRangeTest.java Mon Sep 19 21:22:58 2011
@@ -26,6 +26,9 @@
     public void validV6Addresses() {
         IPRange.parseCIDRBlock("0:0:0:0:0:0:0:0/128");
         IPRange.parseCIDRBlock("1234:5678:90ab:cdef:FfFf:AaAa:BBBB:CCCC/128");
+        IPRange.parseCIDRBlock("1234:5678::BBBB:CCCC/128");
+        IPRange.parseCIDRBlock("2001:630:200::/48");
+        IPRange.parseCIDRBlock("::0BAD:7/128");
     }
     
     @Test
@@ -45,6 +48,7 @@
     public void invalidV6Addresses() {
         testInvalid("0:0/128");
         testInvalid("1:2:3:4:5:6:7/128");
+        testInvalid("::0BAD::7/128");
     }
 
 }



More information about the commits mailing list