Correctly skip over unrecognized optional dircache extensions
commit784b24dde151a967229c2f8c2f08b0827709bd4d
authorShawn O. Pearce <spearce@spearce.org>
Tue, 2 Feb 2010 17:09:26 +0000 (2 09:09 -0800)
committerShawn O. Pearce <spearce@spearce.org>
Tue, 2 Feb 2010 17:09:26 +0000 (2 09:09 -0800)
tree19d2084c5a794a4c21e577ef7bc86b1cd5514015
parent434e7884e5b7db7a4314e80c33a3b98f045050b9
Correctly skip over unrecognized optional dircache extensions

We didn't skip the correct number of bytes when we skipped over an
unrecognized but optional dircache extension.  We missed skipping
the 8 byte header that makes up the extension's name and length.

We also didn't include the skipped extension's payload as part of
our index checksum, resuting in a checksum failure when the index
was done reading.  So ensure we always scan through a skipped
section and include it in the checksum computation.

Add a test case for a currently unsupported index extension, 'ZZZZ',
to verify we can still read the DirCache object even though we
don't know what 'ZZZZ' is supposed to mean.

Bug: 301287
Change-Id: I4bdde94576fffe826d0782483fd98cab1ea628fa
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/gitgit.index.ZZZZ [new file with mode: 0644]
org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/gitgit.index.aaaa [new file with mode: 0644]
org.eclipse.jgit.test/tst-rsrc/org/eclipse/jgit/test/resources/gitgit.index.badchecksum [new file with mode: 0644]
org.eclipse.jgit.test/tst/org/eclipse/jgit/dircache/DirCacheCGitCompatabilityTest.java
org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCache.java