Browse Source

Fix false positives in hashing used by PathFilterGroup

The ByteArraySet failed to check the length of the entry correctly leading
to matches where no match should be.

Bug: 401249
Change-Id: I925bc48d9cafcdf13e1a797bb09fc2555eb270c5
Signed-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>
stable-2.3
Robin Stocker 12 years ago committed by Robin Rosenberg
parent
commit
5d7b722f6e
  1. 13
      org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/PathFilterGroupTest.java
  2. 2
      org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ByteArraySet.java

13
org.eclipse.jgit.test/tst/org/eclipse/jgit/treewalk/filter/PathFilterGroupTest.java

@ -134,6 +134,19 @@ public class PathFilterGroupTest {
assertTrue(filter.include(fakeWalk("d/e/f/g/h")));
}
@Test
public void testLongPaths() throws MissingObjectException,
IncorrectObjectTypeException, IOException {
TreeFilter longPathFilter = PathFilterGroup
.createFromStrings(
"tst/org/eclipse/jgit/treewalk/filter/PathFilterGroupTest.java",
"tst/org/eclipse/jgit/treewalk/filter/PathFilterGroupTest2.java");
assertFalse(longPathFilter
.include(fakeWalk("tst/org/eclipse/jgit/treewalk/FileTreeIteratorTest.java")));
assertFalse(longPathFilter.include(fakeWalk("tst/a-other-in-same")));
assertFalse(longPathFilter.include(fakeWalk("a-nothing-in-common")));
}
@Test
public void testStopWalk() throws MissingObjectException,
IncorrectObjectTypeException, IOException {

2
org.eclipse.jgit/src/org/eclipse/jgit/treewalk/filter/ByteArraySet.java

@ -88,7 +88,7 @@ class ByteArraySet {
}
private static boolean equals(byte[] a, byte[] b, int length) {
if (a.length < length || b.length < length)
if (a.length != length || b.length < length)
return false;
for (int i = 0; i < length; ++i) {
if (a[i] != b[i])

Loading…
Cancel
Save