Skip to content

Commit 0d713cb

Browse files
committed
Protect Signature creation from invalid parameters
1 parent 374f2a5 commit 0d713cb

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

LibGit2Sharp.Tests/SignatureFixture.cs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,20 @@ public void CreatingASignatureWithAnEmailContainingZerosThrows(string email)
2828
{
2929
Assert.Throws<ArgumentException>(() => new Signature("Me", email, DateTimeOffset.Now));
3030
}
31+
32+
[Fact]
33+
public void CreatingASignatureWithBadParamsThrows()
34+
{
35+
Assert.Throws<ArgumentNullException>(() => new Signature(null, "[email protected]", DateTimeOffset.Now));
36+
Assert.Throws<ArgumentException>(() => new Signature(string.Empty, "[email protected]", DateTimeOffset.Now));
37+
Assert.Throws<ArgumentNullException>(() => new Signature("Me", null, DateTimeOffset.Now));
38+
}
39+
40+
[Fact]
41+
public void CanCreateASignatureWithAnEmptyEmail()
42+
{
43+
var sig = new Signature("Me", string.Empty, DateTimeOffset.Now);
44+
Assert.Equal(string.Empty, sig.Email);
45+
}
3146
}
3247
}

LibGit2Sharp/Signature.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,8 @@ internal Signature(IntPtr signaturePtr)
3535
/// <param name="when">The when.</param>
3636
public Signature(string name, string email, DateTimeOffset when)
3737
{
38+
Ensure.ArgumentNotNullOrEmptyString(name, "name");
39+
Ensure.ArgumentNotNull(email, "email");
3840
Ensure.ArgumentDoesNotContainZeroByte(name, "name");
3941
Ensure.ArgumentDoesNotContainZeroByte(email, "email");
4042

0 commit comments

Comments
 (0)