Repository: commons-lang Updated Branches: refs/heads/master fad946a1d -> 6849dfc8a
LANG-1162 StringUtils#equals fails with Index OOBE on non-Strings with identical leading prefix Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/6849dfc8 Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/6849dfc8 Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/6849dfc8 Branch: refs/heads/master Commit: 6849dfc8a660bf8c95354520a2fa1283c9b3aa43 Parents: fad946a Author: Sebb <[email protected]> Authored: Mon Aug 10 22:42:21 2015 +0100 Committer: Sebb <[email protected]> Committed: Mon Aug 10 22:42:21 2015 +0100 ---------------------------------------------------------------------- src/changes/changes.xml | 1 + src/main/java/org/apache/commons/lang3/StringUtils.java | 5 ++++- .../org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-lang/blob/6849dfc8/src/changes/changes.xml ---------------------------------------------------------------------- diff --git a/src/changes/changes.xml b/src/changes/changes.xml index fa53e12..65e0b3d 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -61,6 +61,7 @@ <action issue="LANG-1111" type="fix" dev="chas">Fix FindBugs warnings in DurationFormatUtils</action> <action issue="LANG-1074" type="add" dev="djones" due-to="Haiyang Li">Add a method to ArrayUtils for removing all occurrences of a given element</action> <action issue="LANG-1107" type="update" dev="chas">Fix parsing edge cases in FastDateParser</action> + <action issue="LANG-1162" type="fix" dev="sebb">StringUtils#equals fails with Index OOBE on non-Strings with identical leading prefix</action> </release> <release version="3.4" date="2014-04-06" description="Feature and bugfix release"> http://git-wip-us.apache.org/repos/asf/commons-lang/blob/6849dfc8/src/main/java/org/apache/commons/lang3/StringUtils.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java b/src/main/java/org/apache/commons/lang3/StringUtils.java index 5f167b9..3f0314f 100644 --- a/src/main/java/org/apache/commons/lang3/StringUtils.java +++ b/src/main/java/org/apache/commons/lang3/StringUtils.java @@ -788,10 +788,13 @@ public class StringUtils { if (cs1 == null || cs2 == null) { return false; } + if (cs1.length() != cs2.length()) { + return false; + } if (cs1 instanceof String && cs2 instanceof String) { return cs1.equals(cs2); } - return CharSequenceUtils.regionMatches(cs1, false, 0, cs2, 0, Math.max(cs1.length(), cs2.length())); + return CharSequenceUtils.regionMatches(cs1, false, 0, cs2, 0, cs1.length()); } /** http://git-wip-us.apache.org/repos/asf/commons-lang/blob/6849dfc8/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java ---------------------------------------------------------------------- diff --git a/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java index dc8a513..d2b6418 100644 --- a/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java +++ b/src/test/java/org/apache/commons/lang3/StringUtilsEqualsIndexOfTest.java @@ -535,7 +535,7 @@ public class StringUtilsEqualsIndexOfTest { @Test public void testEquals() { - final CharSequence fooCs = FOO, barCs = BAR, foobarCs = FOOBAR; + final CharSequence fooCs = new StringBuilder(FOO), barCs = new StringBuilder(BAR), foobarCs = new StringBuilder(FOOBAR); assertTrue(StringUtils.equals(null, null)); assertTrue(StringUtils.equals(fooCs, fooCs)); assertTrue(StringUtils.equals(fooCs, new StringBuilder(FOO)));
