Skip to content

Commit c8ba327

Browse files
committed
Protect Commit creation from message containing '\0'
1 parent 0d713cb commit c8ba327

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

LibGit2Sharp.Tests/ObjectDatabaseFixture.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.IO;
3+
using System.Linq;
34
using System.Text;
45
using LibGit2Sharp.Tests.TestHelpers;
56
using Xunit;
@@ -417,5 +418,20 @@ public void CanEnumerateTheGitObjectsFromBareRepository()
417418
Assert.True(count >= 1683);
418419
}
419420
}
421+
422+
[Theory]
423+
[InlineData("\0Leading zero")]
424+
[InlineData("Trailing zero\0")]
425+
[InlineData("Zero \0inside")]
426+
[InlineData("\0")]
427+
[InlineData("\0\0\0")]
428+
public void CreatingACommitWithMessageContainingZeroByteThrows(string message)
429+
{
430+
using (var repo = new Repository(BareTestRepoPath))
431+
{
432+
Assert.Throws<ArgumentException>(() => repo.ObjectDatabase.CreateCommit(
433+
message, Constants.Signature, Constants.Signature, repo.Head.Tip.Tree, Enumerable.Empty<Commit>()));
434+
}
435+
}
420436
}
421437
}

LibGit2Sharp/ObjectDatabase.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,7 @@ public virtual Commit CreateCommit(string message, Signature author, Signature c
198198
internal Commit CreateCommit(string message, Signature author, Signature committer, Tree tree, IEnumerable<Commit> parents, string referenceName)
199199
{
200200
Ensure.ArgumentNotNull(message, "message");
201+
Ensure.ArgumentDoesNotContainZeroByte(message, "message");
201202
Ensure.ArgumentNotNull(author, "author");
202203
Ensure.ArgumentNotNull(committer, "committer");
203204
Ensure.ArgumentNotNull(tree, "tree");

0 commit comments

Comments
 (0)