You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Sebb (JIRA)" <ji...@apache.org> on 2015/08/10 23:26:45 UTC

[jira] [Commented] (LANG-1162) StringUtils#equals fails with Index OOBE on non-Strings with identical leading prefix

    [ https://issues.apache.org/jira/browse/LANG-1162?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14680793#comment-14680793 ] 

Sebb commented on LANG-1162:
----------------------------

The equals(...) method could check that the lengths are equal before calling regionMatches(...) as there is no point checking the contents if they differ.
This is already done by the related equalsIgnoreCase(...) method.

However the underlying method CharSequence.regionMatches(...) should ideally behave the same way as String.regionMatches(...), i.e. it should return false if the regions are different lengths.

> StringUtils#equals fails with Index OOBE on non-Strings with identical leading prefix
> -------------------------------------------------------------------------------------
>
>                 Key: LANG-1162
>                 URL: https://issues.apache.org/jira/browse/LANG-1162
>             Project: Commons Lang
>          Issue Type: Bug
>    Affects Versions: 3.4
>            Reporter: Sebb
>            Assignee: Sebb
>
> From the Commons User mailing list:
> {quote}
> StringUtils.equals(cs1,cs2) delegates to CharSequence.regionMatches(...) in a way that causes IndexOutOfBounds when either of cs1/cs2 isn't a String.
> Specifically, comparing "foo" and "foobar" for non-String CharSequences bombs due to CharSequenceUtils.regionMatches(cs1, false, 0, cs2, 0, Math.max(cs1.length(), cs2.length())) because regionMatches doesn't check for input exhaustion.
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)