Disallow creating invalid DirCacheEntry records
commit329abf721214f60077c9b17cc2c4235bdeed2c4f
authorShawn O. Pearce <spearce@spearce.org>
Fri, 11 Sep 2009 17:52:13 +0000 (11 10:52 -0700)
committerShawn O. Pearce <spearce@spearce.org>
Thu, 4 Feb 2010 03:58:20 +0000 (3 19:58 -0800)
treede172457010162a4884241f0037e6b620b935c73
parentfbadb19543b1ad909bc57b46ff6a27af103934d4
Disallow creating invalid DirCacheEntry records

A dircache record must not use a path string like "/a" or "a//b"
as this results in a tree entry being written with a zero length
name component in the record.  C git does not support an empty name,
and neither does any modern filesystem.

A record also must not have a stage outside of the standard 0-3
value range, as there are only 2 bits of space available in the
on-disk format of the record to store the stage information.
Any other values would be truncated into this space, storing a
different value than the caller expected.

If an application tries to create a DirCache record with either of
these wrong values, we abort with an IllegalArgumentException.

Change-Id: I699de149efdfccd85d8adde07d3efd080e3b49c2
Originally: http://thread.gmane.org/gmane.comp.version-control.git/128214
Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
CC: Adam W. Hawks <awhawks@writeme.com>
org.eclipse.jgit/src/org/eclipse/jgit/dircache/DirCacheEntry.java
org.spearce.jgit.test/tst/org/spearce/jgit/dircache/DirCacheEntryTest.java [new file with mode: 0644]