[Bug 36059] [lang] Wrong length check in StrTokenizer.StringMatcher. From Oliver Heger <oliver.heger@t-online.de>.
git-svn-id: https://svn.apache.org/repos/asf/jakarta/commons/proper/lang/trunk@230565 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
1225f4309c
commit
707e1a4a0b
|
@ -1238,7 +1238,7 @@ public class StrTokenizer implements ListIterator, Cloneable {
|
|||
*/
|
||||
public int isMatch(char[] text, int textLen, int pos) {
|
||||
int len = chars.length;
|
||||
if (pos + len >= textLen) {
|
||||
if (pos + len > textLen) {
|
||||
return 0;
|
||||
}
|
||||
for (int i = 0; i < chars.length; i++, pos++) {
|
||||
|
|
|
@ -379,6 +379,22 @@ public class StrTokenizerTest extends TestCase {
|
|||
assertEquals("f", tok.next());
|
||||
assertEquals("g", tok.next());
|
||||
}
|
||||
|
||||
public void testStringMatcher() {
|
||||
// build test fixture
|
||||
char[] data = new char[26];
|
||||
for(int i = 0; i < data.length; i++) {
|
||||
data[i] = (char) (i + 'a');
|
||||
}
|
||||
// perform tests
|
||||
StrTokenizer.Matcher matcher = new StrTokenizer.StringMatcher("z");
|
||||
for(int i = 0; i < data.length - 1; i++) {
|
||||
assertEquals(0, matcher.isMatch(data, data.length, i));
|
||||
}
|
||||
assertEquals(1, matcher.isMatch(data, data.length, data.length - 1));
|
||||
// test bad pos argument.
|
||||
assertEquals(0, matcher.isMatch(data, data.length, data.length +100));
|
||||
}
|
||||
|
||||
public void testTSV() {
|
||||
this.testXSVAbc(StrTokenizer.getTSVInstance(TSV_SIMPLE_FIXTURE));
|
||||
|
|
Loading…
Reference in New Issue