You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ba...@apache.org on 2011/01/30 09:01:20 UTC

svn commit: r1065215 - in /commons/proper/lang/trunk/src: main/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaper.java test/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaperTest.java

Author: bayard
Date: Sun Jan 30 08:01:19 2011
New Revision: 1065215

URL: http://svn.apache.org/viewvc?rev=1065215&view=rev
Log:
Implemented TODO to protect unescaper from ArrayIndexOutOfBounds

Modified:
    commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaper.java
    commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaperTest.java

Modified: commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaper.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaper.java?rev=1065215&r1=1065214&r2=1065215&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaper.java (original)
+++ commons/proper/lang/trunk/src/main/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaper.java Sun Jan 30 08:01:19 2011
@@ -34,8 +34,7 @@ public class NumericEntityUnescaper exte
      */
     @Override
     public int translate(CharSequence input, int index, Writer out) throws IOException {
-        // TODO: Protect from ArrayIndexOutOfBounds
-        if(input.charAt(index) == '&' && input.charAt(index + 1) == '#') {
+        if(input.charAt(index) == '&' && index < (input.length() - 1) && input.charAt(index + 1) == '#') {
             int start = index + 2;
             boolean isHex = false;
 

Modified: commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaperTest.java
URL: http://svn.apache.org/viewvc/commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaperTest.java?rev=1065215&r1=1065214&r2=1065215&view=diff
==============================================================================
--- commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaperTest.java (original)
+++ commons/proper/lang/trunk/src/test/java/org/apache/commons/lang3/text/translate/NumericEntityUnescaperTest.java Sun Jan 30 08:01:19 2011
@@ -34,4 +34,13 @@ public class NumericEntityUnescaperTest 
         assertEquals("Failed to unescape numeric entities supplementary characters", expected, result);
     }
 
+    public void testOutOfBounds() {
+        NumericEntityUnescaper neu = new NumericEntityUnescaper();
+        String input = "Test &";
+        String expected = input;
+
+        String result = neu.translate(input);
+        assertEquals("Failed to ignore when last character is &", expected, result);
+    }
+
 }