Author: bayard
Date: Thu Oct  5 11:29:09 2006
New Revision: 453308

URL: http://svn.apache.org/viewvc?view=rev&rev=453308
Log:
Fixing ArrayOutOfBoundsException bug reported in #VALIDATOR-202. This fix is 
pretty simple - 'Create an array of size # of .s plus one', but the 
implementation of that isn't very beautiful. 

Modified:
    
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/UrlValidator.java
    
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/UrlTest.java

Modified: 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/UrlValidator.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/UrlValidator.java?view=diff&rev=453308&r1=453307&r2=453308
==============================================================================
--- 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/UrlValidator.java
 (original)
+++ 
jakarta/commons/proper/validator/trunk/src/share/org/apache/commons/validator/UrlValidator.java
 Thu Oct  5 11:29:09 2006
@@ -355,7 +355,16 @@
 
 //rightmost hostname will never start with a digit.
         if (hostname) {
-            String[] domainSegment = new String[10];
+            // LOW-TECH FIX FOR VALIDATOR-202
+            // TODO: Rewrite to use ArrayList and .add semantics: see 
VALIDATOR-203
+            char[] chars = hostIP.toCharArray();
+            int size = 1;
+            for(int i=0; i<chars.length; i++) {
+                if(chars[i] == '.') {
+                    size++;
+                }
+            }
+            String[] domainSegment = new String[size];
             boolean match = true;
             int segmentCount = 0;
             int segmentLength = 0;

Modified: 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/UrlTest.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/UrlTest.java?view=diff&rev=453308&r1=453307&r2=453308
==============================================================================
--- 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/UrlTest.java
 (original)
+++ 
jakarta/commons/proper/validator/trunk/src/test/org/apache/commons/validator/UrlTest.java
 Thu Oct  5 11:29:09 2006
@@ -135,6 +135,12 @@
       }
    }
 
+   public void testValidator202() {
+       String[] schemes = {"http","https"};
+       UrlValidator urlValidator = new UrlValidator(schemes, 
UrlValidator.NO_FRAGMENTS);
+       
urlValidator.isValid("http://www.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.logoworks.comwww.log";);
+   }
+
    static boolean incrementTestPartsIndex(int[] testPartsIndex, Object[] 
testParts) {
       boolean carry = true;  //add 1 to lowest order part.
       boolean maxIndex = true;
@@ -278,4 +284,4 @@
                             new TestPair("telnet", false)};
 
 
-}
\ No newline at end of file
+}



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to