henning     2003/06/19 08:33:17

  Modified:    src/java/org/apache/turbine/services/intake/validator
                        BooleanValidator.java
  Log:
  Make sure that the True and False value arrays can have different length
  and the code does not die with an ArrayOutOfBounds Exception
  
  Revision  Changes    Path
  1.7       +15 -4     
jakarta-turbine-2/src/java/org/apache/turbine/services/intake/validator/BooleanValidator.java
  
  Index: BooleanValidator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-turbine-2/src/java/org/apache/turbine/services/intake/validator/BooleanValidator.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- BooleanValidator.java     19 Jun 2003 15:23:13 -0000      1.6
  +++ BooleanValidator.java     19 Jun 2003 15:33:16 -0000      1.7
  @@ -57,6 +57,9 @@
   import java.text.ParseException;
   import java.util.Map;
   
  +import org.apache.commons.logging.Log;
  +import org.apache.commons.logging.LogFactory;
  +
   /**
    * Validator for boolean field types.<br><br>
    *
  @@ -88,6 +91,9 @@
   public class BooleanValidator
           extends DefaultValidator
   {
  +    /** Logging */
  +    private static Log log = LogFactory.getClass(BooleanValidator.class);
  +
       /** String values which would evaluate to Boolean.TRUE */
       private static String[] trueValues = {"TRUE","T","YES","Y","1"};
   
  @@ -146,15 +152,20 @@
               throws ParseException
       {
           Boolean result = null;
  -        for (int cnt = 0; cnt < trueValues.length; cnt++)
  +
  +        for (int cnt = 0; 
  +             cnt < Math.max(trueValues.length, falseValues.length); cnt++)
           {
  -            if (stringValue.equalsIgnoreCase(trueValues[cnt]))
  +            // Short-cut evaluation or bust!
  +            if ((cnt < trueValues.length) && 
  +                    stringValue.equalsIgnoreCase(trueValues[cnt]))
               {
                   result = Boolean.TRUE;
                   break;
               }
   
  -            if (stringValue.equalsIgnoreCase(falseValues[cnt]))
  +            if ((cnt < falseValues.length) && 
  +                    stringValue.equalsIgnoreCase(falseValues[cnt]))
               {
                   result = Boolean.FALSE;
                   break;
  
  
  

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

Reply via email to