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]