diff options
author | David Turner <dturner@twosigma.com> | 2016-09-26 16:41:19 -0400 |
---|---|---|
committer | David Pursehouse <david.pursehouse@gmail.com> | 2016-10-19 22:24:24 +0900 |
commit | e3468735111f26e4cdb4c249c257da52f4c3cffb (patch) | |
tree | 213c1ff0f07dd7252a6293211e5c431f866b1823 /org.eclipse.jgit.test | |
parent | ccc899773e903cae48816edc9ad3c564c161111d (diff) | |
download | jgit-e3468735111f26e4cdb4c249c257da52f4c3cffb.tar.gz jgit-e3468735111f26e4cdb4c249c257da52f4c3cffb.zip |
TreeFormatter: disallow empty filenames in trees
Git barfs on these (and they don't make any sense), so we certainly
shouldn't write them.
Change-Id: I3faf8554a05f0fd147be2e63fbe55987d3f88099
Signed-off-by: David Turner <dturner@twosigma.com>
Signed-off-by: David Pursehouse <david.pursehouse@gmail.com>
Diffstat (limited to 'org.eclipse.jgit.test')
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java | 15 | ||||
-rw-r--r-- | org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java | 4 |
2 files changed, 18 insertions, 1 deletions
diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java index b6ad22bbe5..ae1e531b83 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/internal/storage/file/T0003_BasicTest.java @@ -82,9 +82,13 @@ import org.eclipse.jgit.storage.file.FileBasedConfig; import org.eclipse.jgit.storage.file.FileRepositoryBuilder; import org.eclipse.jgit.test.resources.SampleDataRepositoryTestCase; import org.eclipse.jgit.util.FileUtils; +import org.junit.Rule; import org.junit.Test; +import org.junit.rules.ExpectedException; public class T0003_BasicTest extends SampleDataRepositoryTestCase { + @Rule + public ExpectedException expectedException = ExpectedException.none(); @Test public void test001_Initalize() { @@ -326,6 +330,17 @@ public class T0003_BasicTest extends SampleDataRepositoryTestCase { } @Test + public void test002_CreateBadTree() throws Exception { + // We won't create a tree entry with an empty filename + // + expectedException.expect(IllegalArgumentException.class); + expectedException.expectMessage(JGitText.get().invalidTreeZeroLengthName); + final TreeFormatter formatter = new TreeFormatter(); + formatter.append("", FileMode.TREE, + ObjectId.fromString("4b825dc642cb6eb9a060e54bf8d69288fbee4904")); + } + + @Test public void test006_ReadUglyConfig() throws IOException, ConfigInvalidException { final File cfg = new File(db.getDirectory(), Constants.CONFIG); diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java index 59a4699bcd..32a1ec96a5 100644 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/DirCacheCheckoutMaliciousPathTest.java @@ -366,7 +366,9 @@ public class DirCacheCheckoutMaliciousPathTest extends RepositoryTestCase { insertId = blobId; for (int i = path.length - 1; i >= 0; --i) { TreeFormatter treeFormatter = new TreeFormatter(); - treeFormatter.append(path[i], mode, insertId); + treeFormatter.append(path[i].getBytes(), 0, + path[i].getBytes().length, + mode, insertId, true); insertId = newObjectInserter.insert(treeFormatter); mode = FileMode.TREE; } |