summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Halstrick <christian.halstrick@sap.com>2015-05-04 11:00:57 +0200
committerChristian Halstrick <christian.halstrick@sap.com>2015-05-04 11:07:23 +0200
commit6f7130140410d9c8269b846e782f27df17783c35 (patch)
tree04e081899a23c56ae6598be45f7c586effb4fc98
parent4a984e20332a765a81cadeaa4875b228ebf290fb (diff)
downloadjgit-6f7130140410d9c8269b846e782f27df17783c35.tar.gz
jgit-6f7130140410d9c8269b846e782f27df17783c35.zip
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
-rw-r--r--org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java2
1 files changed, 1 insertions, 1 deletions
diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java
index 30932e8274..83aa8fa4de 100644
--- a/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java
+++ b/org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java
@@ -399,7 +399,7 @@ public class DirCacheTree {
for (int eOff = 0; eOff < eLen && aOff < aLen; eOff++, aOff++)
if (e[eOff] != a[aOff])
return false;
- if (aOff == aLen)
+ if (aOff >= aLen)
return false;
return a[aOff] == '/';
}