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
This commit is contained in:
parent
e314e42d41
commit
3d17be85ba
|
@ -425,7 +425,7 @@ final boolean contains(final byte[] a, int aOff, final int aLen) {
|
||||||
*/
|
*/
|
||||||
void validate(final DirCacheEntry[] cache, final int cCnt, int cIdx,
|
void validate(final DirCacheEntry[] cache, final int cCnt, int cIdx,
|
||||||
final int pathOff) {
|
final int pathOff) {
|
||||||
if (entrySpan >= 0) {
|
if (entrySpan >= 0 && cIdx + entrySpan <= cCnt) {
|
||||||
// If we are valid, our children are also valid.
|
// If we are valid, our children are also valid.
|
||||||
// We have no need to validate them.
|
// We have no need to validate them.
|
||||||
//
|
//
|
||||||
|
|
Loading…
Reference in New Issue