diff options
author | Christian Halstrick <christian.halstrick@sap.com> | 2015-05-04 11:00:57 +0200 |
---|---|---|
committer | Christian Halstrick <christian.halstrick@sap.com> | 2015-05-04 11:07:23 +0200 |
commit | 6f7130140410d9c8269b846e782f27df17783c35 (patch) | |
tree | 04e081899a23c56ae6598be45f7c586effb4fc98 | |
parent | 4a984e20332a765a81cadeaa4875b228ebf290fb (diff) | |
download | jgit-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.java | 2 |
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] == '/'; } |