Author: niallp
Date: Sun Jan 9 01:07:04 2011
New Revision: 1056853
URL: http://svn.apache.org/viewvc?rev=1056853&view=rev
Log:
Port LANG-638 to LANG 2.x Branch - NumberUtils createNumber() throws a
StringIndexOutOfBoundsException when argument containing "e" and "E" is passed
in
Modified:
commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/math/NumberUtils.java
commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java
Modified:
commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/math/NumberUtils.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/math/NumberUtils.java?rev=1056853&r1=1056852&r2=1056853&view=diff
==============================================================================
---
commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/math/NumberUtils.java
(original)
+++
commons/proper/lang/branches/LANG_2_X/src/main/java/org/apache/commons/lang/math/NumberUtils.java
Sun Jan 9 01:07:04 2011
@@ -520,7 +520,7 @@ public class NumberUtils {
if (decPos > -1) {
if (expPos > -1) {
- if (expPos < decPos) {
+ if (expPos < decPos || expPos > str.length()) {
throw new NumberFormatException(str + " is not a valid
number.");
}
dec = str.substring(decPos + 1, expPos);
@@ -530,6 +530,9 @@ public class NumberUtils {
mant = str.substring(0, decPos);
} else {
if (expPos > -1) {
+ if (expPos > str.length()) {
+ throw new NumberFormatException(str + " is not a valid
number.");
+ }
mant = str.substring(0, expPos);
} else {
mant = str;
Modified:
commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java
URL:
http://svn.apache.org/viewvc/commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java?rev=1056853&r1=1056852&r2=1056853&view=diff
==============================================================================
---
commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java
(original)
+++
commons/proper/lang/branches/LANG_2_X/src/test/java/org/apache/commons/lang/math/NumberUtilsTest.java
Sun Jan 9 01:07:04 2011
@@ -229,6 +229,9 @@ public class NumberUtilsTest extends Tes
// LANG-521
assertEquals("createNumber(String) LANG-521 failed", new Float("2."),
NumberUtils.createNumber("2."));
+
+ // LANG-638
+ assertFalse("createNumber(String) succeeded",
checkCreateNumber("1eE"));
}
public void testCreateFloat() {