Browse Source

Fix possible AIOOB in DirCacheTree.contains()

When DirCacheTree.contains() is called and 'aOff' is greater than 'aLen'
an ArrayIndexOutOfBoundsException was thrown. This fix makes
DirCacheTree.contains() more robust and allows parsing such index files
without throwing AIOOB.

I couldn't create a test case leading to this situation but I have seen
such situations while inspecting Bug: 465393. It seems that such
situations are created on Windows when there are invalid pathes in the
index. There may be a not yet known bug leading to such situations in
combination with invalid pathes.

Bug: 465393
Change-Id: I6535d924a22cba9a05df0ccd7e6dc2c9ddc42375
stable-4.1
Christian Halstrick 10 years ago
parent
commit
6f71301404
  1. 2
      org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java

2
org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java vendored

@ -399,7 +399,7 @@ public class DirCacheTree {
for (int eOff = 0; eOff < eLen && aOff < aLen; eOff++, aOff++) for (int eOff = 0; eOff < eLen && aOff < aLen; eOff++, aOff++)
if (e[eOff] != a[aOff]) if (e[eOff] != a[aOff])
return false; return false;
if (aOff == aLen) if (aOff >= aLen)
return false; return false;
return a[aOff] == '/'; return a[aOff] == '/';
} }

Loading…
Cancel
Save