瀏覽代碼

Handle invalid tree extensions

In case the index contains wrong tree extensions don't throw a
ArrayIndexOutOfBounds exception but revalidate the tree extension.

It happened that the git index written by Git for Windows contained valid
(means entryCount>0) tree extensions for pathes which are not existing
in the index. Native git handles this inconsistency silently but JGit
was crashing with a ArrayIndexOutOfBounds exception. Teach JGit to
better recognize such cases and revalidate such extensions.

It's hard to write a test because JGit doesn't write such extensions. It
only reads, validates and makes use of them. But the bug tells how to
create such situations.

Bug: 457152
Change-Id: Id3ffd7dc7ae1c55674d88bf1b43953234fe0b68d
tags/v3.7.0.201502031740-rc1
Christian Halstrick 9 年之前
父節點
當前提交
3d17be85ba
共有 1 個檔案被更改,包括 1 行新增1 行删除
  1. 1
    1
      org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java

+ 1
- 1
org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheTree.java 查看文件

@@ -425,7 +425,7 @@ public class DirCacheTree {
*/
void validate(final DirCacheEntry[] cache, final int cCnt, int cIdx,
final int pathOff) {
if (entrySpan >= 0) {
if (entrySpan >= 0 && cIdx + entrySpan <= cCnt) {
// If we are valid, our children are also valid.
// We have no need to validate them.
//

Loading…
取消
儲存