Return-Path: Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: (qmail 93750 invoked from network); 30 Jan 2011 08:01:45 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 30 Jan 2011 08:01:45 -0000 Received: (qmail 70772 invoked by uid 500); 30 Jan 2011 08:01:45 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 70523 invoked by uid 500); 30 Jan 2011 08:01:42 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 70516 invoked by uid 99); 30 Jan 2011 08:01:42 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 30 Jan 2011 08:01:42 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 30 Jan 2011 08:01:41 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 1D14C23889B3; Sun, 30 Jan 2011 08:01:20 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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 Date: Sun, 30 Jan 2011 08:01:20 -0000 To: commits@commons.apache.org From: bayard@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20110130080120.1D14C23889B3@eris.apache.org> 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); + } + }